Скопировать найденные файлы linux

Find and copy files

If your intent is to copy the found files into /home/shantanu/tosend , you have the order of the arguments to cp reversed:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "<>" /home/shantanu/tosend \; 

Please, note: the find command use <> as placeholder for matched file.

find -iname ‘*.mp3’ -mtime -1 -exec cp <> /home/my_path/ \; is there anything wrong with this command ? it’s not working

In Ubuntu 18 the curly braces also have to be put into single quotes: find -iname ‘*.mp3’ -mtime -1 -exec cp ‘<>‘ /home/my_path/ \;

i faced an issue something like this.

Actually, in two ways you can process find command output in copy command

  1. If find command’s output doesn’t contain any space i.e if file name doesn’t contain space in it then you can use below mentioned command: Syntax: find | xargs cp -t Example: find -mtime -1 -type f | xargs cp -t inner/
  2. But most of the time our production data files might contain space in it. So most of time below mentioned command is safer: Syntax: find -exec cp ‘<>‘ \; Example find -mtime -1 -type f -exec cp ‘<>‘ inner/ \;

In the second example, last part i.e semi-colon is also considered as part of find command, that should be escaped before press the enter button. Otherwise you will get an error something like this

find: missing argument to `-exec' 

In your case, copy command syntax is wrong in order to copy find file into /home/shantanu/tosend . The following command will work:

find /home/shantanu/processed/ -name '*2011*.xml' -exec cp <> /home/shantanu/tosend \; 

Источник

Читайте также:  Dns server client linux

Команда find Linux

Изображение баннера

find это мощный инструмент для работы с файлами.

С его помощью можно задавать различные составные условия для дальнейших действий над файлами.

Часто ипользуется как первый шаг перед копированием, перемещением, удалением, изменением файлов, соответсвующих определённым условиям.

В этой статье вы можете познакомится с основами применения find. Про применение find совместно с grep , sed , xargs и другими утилитами вы можете прочитать в статье «Продвинутые методы работы с find»

Поиск

Найти и вывести на экран все файлы в директории

find
find .
find . -print

-name: Поиск по имени

Найти по полному имени в текущей директории

find . -name heihei.log

find . -iname heihei.log

Поиск по расширению

Найти по расширению файла с помощью wildcard *

Ищем в /usr/share/doc все pdf файлы

find /usr/share/doc -name *.pdf

-not: обратное условие

Найти в текущей директории все файлы кроме php

find . -not -name *.php
find . ! -name *.php

Несколько условий вместе

Найти все файлы, которые начинаются с log но не имеют расширения .txt

find . -name «log*» ! -name *.txt

-o: Логическое или

Найти либо .html либо .php файлы

find . -name *.html -o -name *.php

Найти и скопировать

Найти и сразу скопировать в текущую директорию

find /usr/share/doc -name *.pdf -exec cp <> . \;

Найти в текущей директории

Удалить из текущей директории

find -name *.pdf -delete

Поиск по типу

Чтобы найти только файлы определённого типа выполните find с опцией type.

Например, что найти все ссылки в директории /etc

Подробнее о файлах в Linux читайте в статье «Типы файлов в Linux»

Уровни вложенности

Найти все ссылки только на верхнем уровне вложенности

find /etc -maxdepth 1 -type l

Поиск по размеру файла

Filesystem Size Used Avail Use% Mounted on /dev/sda1 1014M 194M 821M 20% /boot

Найти обычные файлы определённого размера

Чтобы найти обычные файлы нужно использовать -type f

find /boot -size +20000k -type f

find: ‘/boot/efi/EFI/centos’: Permission denied find: ‘/boot/grub2’: Permission denied /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img /boot/initramfs-3.10.0-1160.el7.x86_64.img /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img

Файлы бывают следующих типов:

— : regular file
d : directory
c : character device file
b : block device file
s : local socket file
p : named pipe
l : symbolic link

Читайте также:  List files and folders linux

find /boot -size +10000k -type f

find: ‘/boot/efi/EFI/centos’: Permission denied find: ‘/boot/grub2’: Permission denied /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img /boot/initramfs-3.10.0-1160.el7.x86_64.img /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

То же самое плюс показать размер файлов

find /boot -size +10000k -type f -exec du -h <> \;

find: ‘/boot/efi/EFI/centos’: Permission denied find: ‘/boot/grub2’: Permission denied 60M /boot/initramfs-0-rescue-389ee10be1b38d4281b9720fabd80a37.img 21M /boot/initramfs-3.10.0-1160.el7.x86_64.img 13M /boot/initramfs-3.10.0-1160.el7.x86_64kdump.img 21M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64.img 14M /boot/initramfs-3.10.0-1160.2.2.el7.x86_64kdump.img

Поиск по началу имени файла

Обратите внимание, что в find, в отличие от grep , ставить перед началом названия никаких символов не нужно.

find -name topb*

Поиск по части имени файла

Найти в проекте topbicyle все директории с qa в названии

find topbicycle/ -name *qa* -type d

-perm: поиск по правам доступа

find . -type f -perm 0600
find . -type f ! -perm 0600

-path: поиск путей

Если мне нужно посмотреть содержимое директорий /code/php и /code/python

Пример укороченного результата

-prune: ограничить глубину

С помощью path можно посмотреть содержимое всех поддиректорий code на букву p /code/p*

Если нужно посмотреть только поддиректории верхнего уровня — используется -prune

find . -path «./code/p*» -prune

Получили только поддиректории без их содержимого

Исключить директорию из поиска

Из предыдущего параграфа понятно, что с помощью prune можно исключить директорию из поиска.

Пример: найти в ./code все файлы, заканчивающиеся на index.php но проигнорировать поддиректории на p, то есть в директориях python и php не искать.

find ./code -path «./code/p*» -prune -false -o -name «*index.php»

./code/js/errors/index.php ./code/js/index.php ./code/c/index.php ./code/cpp/index.php ./code/go/pointers/index.php ./code/go/declare_variable/index.php ./code/go/constants/index.php ./code/go/index.php ./code/java/index.php ./code/dotnet/index.php ./code/ruby/index.php ./code/theory/index.php ./code/index.php

-false нужен чтобы не выводить проигнорированные директории.

Ещё один способ исключить директорию из поиска

find ./code -name «*.php« -not -path «./code/p*»

Источник

Linux ‘find’ command: How to find and copy files

Linux find/copy FAQ: How can I use the find command to find many files and copy them all to a directory?

I ran into a situation this morning where I needed to use the Linux find command to (a) find all the MP3 files beneath my current directory and (b) copy them to another directory. In this case I didn’t want to do a cp -r command or tar command to preserve the directory structure; instead, I wanted all of the files to end up in the same directory (so I could easily import them into iTunes).

Читайте также:  Linux find paths must precede expression

In short, here’s the find command I used to find and copy all of those files:

find . -type f -name "*.mp3" -exec cp <> /tmp/MusicFiles \;

If you’re familiar with the find command and have used the -exec option before, the only thing hard about this command is knowing where to put the curly braces and the \; in the command.

  1. In this example, all the MP3 files beneath the current directory are copied into the target directory (/tmp/MusicFiles). Again, this isn’t a cp -r command; all of these files will end up in one folder.
  2. As a result, if there are duplicate file names, some of the files will be lost.
  3. If you don’t want to overwrite existing files, use the cp -n command, like this:
find . -type f -name "*.mp3" -exec cp -n <> /tmp/MusicFiles \;

The -n option of the cp command means “no clobber,” and you can also type that as cp —no-clobber on some systems, such as Linux. (The -n option appears to work on MacOS systems, but —no-clobber does not.) Be sure to test this command before using it on something important; I haven’t tested it yet, I just read the man page for the cp command.)

If you ever need to use the Linux find command to find a large collection of files and copy them to another location, I hope this has been helpful.

Another example: Find and move

Here’s another example of a “find and copy” command I just used, though in this case it was a “find and move” command. In this case I had a bunch of files (with unique names) in subdirectories, and used this command to copy them all to the current directory:

As before, this is a dangerous command, so be careful. With this command, if you have duplicate filenames, you will definitely lose data during the move operations.

Источник

Оцените статью
Adblock
detector