find - поиск файлов - памятка по команде

Автор Leo, 04 июня 2014, 16:08:12

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Leo

Поиск файлов, модифицированных после указанной даты:
find /path/to/dir -newermt "date"
find /path/to/dir -newermt "Feb 07"
find /path/to/dir -newermt "yyyy-mm-dd"


Поиск файлов, доступ к которым был между указанными датами:
find /path/to/dir -type f -newerat 2008-09-29 ! -newerat 2008-09-30

Поиск всех модифицированных файлов в промежутке дат
find /path/to/dir -type f -name "*" -newermt 2013-02-07 ! -newermt 2013-02-08

Поиск файлов новее файла /tmp/foo
find /path/to/dir -newer /tmp/foo

Поиск текстовых файлов, которые были модифицированы за последние 60 дней:
find /path/to/dir -iname "*.txt" -mtime -60

Подсчёт количества изменённых за последние 60 дней текстовых файлов с помощью wc:
find /path/to/dir -iname "*.txt" -mtime -60 | wc -l

Поиск всех mp3-шек, которые были прослушаны за последние 10 дней:
find /path/to/dir -iname "*.mp3" -atime 10 -type -f

Использование опции -ls для детализации вывода:
find /path/to/dir -type f -name "*.py" -newermt 2013-02-07 ! -newermt 2013-02-08 -ls

Использование опции -delete для удаления найденных файлов:
find /path/to/dir -type f -name "*.py" -newermt 2013-02-07 ! -newermt 2013-02-08 -delete


endru

#1
Рекурсивное изменение прав доступа только для директорий!
find /home/user/ -type d -exec chmod 755 {} \;

Рекурсивное изменение прав доступа только для файлов!
find /home/user/ -type f -exec chmod 644 {} \;

Находит все файлы *.sh, выводит их на экран. Если в найденном файле есть слова copy, то выводит эти строки на экран
find /home/user/ -name "*.sh" -exec echo {} \; -exec grep copy {} \;
результат

.file1.sh
.file2.sh
#copy my files
cp -r /home/user/job/* /home/user/copy_job/
.file3.sh
[свернуть]

Для всех найденных файлов *.sh сменит владельца на root и выставит права 700
find /home/user/job/ -name "*.sh" -exec chown root {} \; -exec chmod 700 {} \;

Сменит расширение найденных файлов с .htm на .html
find /home/user/job/ -name "*.htm" -exec rename 's/.htm/.html/g' {} \;

Скопировать найденные файлы на удаленный сервер (предварительно нужно настроить ssh - без пароля, чтобы постоянно не вводить пароль)
find /home/user/ -name "*.txt" -exec scp {} user@server:/path/to/dir/ \;

Найти файлы размер которых больше 100Мб:
find /home/user/ -type f -size +100M

Бывает такое, что в консоли файлы отображаются как кракозябры, не правильная кодировка. Как их удалить, исправить?
1) Смотрим inode файлов в текущей директории
2) находим файл с помощью find и делаем с ним все что угодно, например переименовываем
$ ls -li
394509 -rw-r--r-- 1 user user  16005 Июн 20 10:38 ??????.docx
$ find -inum 394509 -exec mv {} "MyDOCfile.docx" \;
$ ls -l
-rw-r--r-- 1 user user  16005 Июн 20 10:38 MyDOCfile.docx