извините, если об этом спрашивали раньше, но мне было любопытно, что такое эквивалентная команда Linux для forfiles.exe в винде? Это пришло мне в голову, когда я увидел этот вопрос
find
- это полноценная замена, но для простых операций с файлами в текущем каталоге это sh
-script может быть довольно полезным (и его легче читать / писать):
for file in *.jpg; do
echo "do something with $file"
done
В найти команда делает то, что вы хотите. Вот пример:
find /mnt/Pictures -name '*.jpg' \! -mtime 7 -exec rm {} \;
Это удалит все файлы jpg из /mnt/Pictures
, которые не изменялись за последние 7 дней (168 часов). Если вас не волнует регистр имен файлов, используйте -iname
вместо того -name
.
Вот соответствие между параметрами forfiles и параметры найти:
/p
→ путь - это первый аргумент поиска./s
→ по умолчанию поиск выполняется во всех подкаталогах. Чтобы отключить это, используйте -maxdepth
вариант со значением 1, т.е. -maxdepth 1
./c
→ -exec
. Также замените @file
с участием {}
и не забудьте завершить команду \;
(многих новичков укусила эта ошибка)./d
→ -mtime n
. Данные файла были в последний раз изменены n
* 24 часа назад!
отменяет условие. !
- это специальный символ в некоторых оболочках, включая Bash, поэтому его нужно экранировать или заключать в кавычки, поэтому вы напишете \!
большую часть времени.
думаю найти предоставляет функциональные возможности, предлагаемые forfiles.
Вы можете создать задание cron, которое использует find с соответствующими аргументами, например -mtime +7