- Поиск и копирование файлов по расширению,
- Решение
- Решение
- Команда find Linux
- Поиск
- -name: Поиск по имени
- Поиск по расширению
- -not: обратное условие
- Несколько условий вместе
- -o: Логическое или
- Найти и скопировать
- Поиск по типу
- Уровни вложенности
- Поиск по размеру файла
- Поиск по началу имени файла
- Поиск по части имени файла
- -perm: поиск по правам доступа
- -path: поиск путей
- -prune: ограничить глубину
- Исключить директорию из поиска
- Find and copy files
Поиск и копирование файлов по расширению,
Здравствуйте, такая вот проблема: при переустановке windows на Linux mint не уследил за одним моментом и затер все файлы. Там и фотки маленькой дочки, и фотки со свадьбы короче супруга рвет и мечет как восстановить файлы я вроде разобрался, Восстанавливал с помощью photorec, но он мне нашел 1 000 000 файлов (не только фотки но еще кучу всего), пользоваться стандартным поиском просто не возможно (все безумно виснет). Подскажите, как с помощью терминала найти файлы только .jpg и скопировать их в другую директорию. Заранее благодарю.
Выборка файлов по расширению, упаковка, отправка адресатам, ведение лога, резервное копирование
Всем привет Сделал следующий батник Он ищет в папке файлы aaa0000bbb*.CNG, архивирует их в.
Поиск файлов по расширению
Как из папки и подпапок получить список файлов с расширением "txt", например? Спасибо
Поиск файлов по расширению
Есть переменная "NDisk" в которой хранится имя диска надо создать функцию которая ищет в корне.
Сообщение было отмечено njog как решение
Решение
find -name "*.jpg" -exec cp '<>' /your/new/folder \;
я правильно понял? <> — означает от куда будет копироваться, а /your/new/folder — куда. и обязателен ли обратный слэш в конце. (большое спасибо за ответ)
Сообщение было отмечено njog как решение
Решение
Сообщение от njog
. «то, что нашла команда find»
а искать она будет в той папке (и ее подпаках) в которой была запущена команда.
если есть желание указать конкретную папку, в которой искать, то ее нужно вписать сразу после find
find /path/where/to/search -name "*.jpg" -exec cp '<>' /your/new/folder \;
Сообщение от njog
Сообщение от njog
Спасибо, вроде ищет, извините за назойливость, последний вопрос (надеюсь). у меня был один очень важный txt файл, photorec нашел полтора миллиона, подскажите пожалуйста как найти нужный зная его содержимое.
grep -i -r "текст, который был в файле" /path/where/to/search/*.txt
Сообщение от njog
тогда не понимаю, на счет регистра символов у меня все было норм, почему у меня он думал очень долго и ничего не выдал. возможно что этого файла просто не существует.
это обычный «текстовый» поиск.
в этом разделе форума (или в убунте, или в линуксе) какой-то человек выкладывал свой специальный скрипт для поиска. может он поможет (если найдете)
и кстати, если файл в виндузной кодировке, то там русский текст с другой кодовой страницей.
файл виндовый, текст на русском, кстати ваш код выдает ошибку, типа не может найти файл или каталог, дело в том что в папке восстановления есть подкаталоги, может поэтому не хочет. Какой то скрипт я находил, но в комментариях сказали что он велосипед изобрел, уж не знаю на сколько это правда
Сообщение от njog
=»сферический конь в вакууме».пишите сюда точно — что именно сообщает система, тогда будет видно, какую я там ошибку сделал
Сообщение от njog
Сообщение от njog
я же написал выдает «Нет такого файла или каталога», это когда /*.txt. без txt ищет но результатов не выдает
Сообщение от njog
grep -r -i --include="*.txt" "что искать" /папка/где/искать
Сообщение от njog
Спасибо, сейчас буду пробовать
Добавлено через 31 минуту
я вам уже надоел, но не могу не спросить, с помощью find он нашел и скопировал все фотки какие восстановил, но там тоже очень много хлама (всякие логотипы, файлы из интернета, которые даже не качали) в результате файлов в одной папке получилось еще больше 204 000, при открытии папки он так виснет, что даже не отображает (только внизу пишет сколько в ней находится файлов), как можно из папки где на данный момент скопированные все фотки, произвести еще один поиск, только на этот раз по весу файла, например чтобы он искал и копировал фотки, которые не меньше 1Мб.
Numeric arguments can be specified as +n for greater than n, -n for less than n, n for exactly n. . -size n[cwbkMG] File uses n units of space. The following suffixes can be used: `b' for 512-byte blocks (this is the default if no suffix is used) `c' for bytes `w' for two-byte words `k' for Kilobytes (units of 1024 bytes) `M' for Megabytes (units of 1048576 bytes) `G' for Gigabytes (units of 1073741824 bytes) The size does not count indirect blocks, but it does count blocks in sparse files that are not actually allocated. Bear in mind that the `%k' and `%b' format specifiers of -printf handle sparse files differently. The `b' suffix always denotes 512-byte blocks and never 1 Kilobyte blocks, which is different to the behaviour of -ls.
Вы наверное с помощью photorec искали все файлы. В этой программе можно было задать маску и искать только, к примеру, jpg файлы.
Нет, у меня просто были не только txt и jpg, в смысле выбрал все что нужно Ребят, у меня получается папка, где отсортированны все фотки со значительными размерами (без подкаталогов) общий размер 96 Гб. Сами понимаете открыть такую папку и посмотреть что в ней достатьчно сложно. Как мне с помощью find или другой функции создать в этой папке подкаталоги, и разместить в каждом подкаталоге по 200 фотографий?!
P.S. Маны читал и гуглил, подходящей инфы не нашел, заранее спасибо
Поиск файлов по расширению
Надо написать консольное приложение, где входными данными были бы путь к каталогу и расширения.
Поиск файлов по расширению
Как выдрать расширение файлов в рассматриваемой папке и ее подпапках подскажите пожалуйста!! Т.е.
Поиск файлов по расширению в VBA
В YANDEX есть ПОИСК ФАЙЛов по РАСШИРЕНИЮ, а КАК Средствами VBA (СКАЧАТЬ ИНФУ по гиперссылкам из.
Поиск файлов по заданному расширению
Напишите пожалуста урывок программного кода, через который будет осуществляться поиск файлов на.
Команда 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
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*»
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
- 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/
- 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 \;