Я хочу запустить команду, подобную этой, где AVI-файлы старше 7 дней будут удалены:
find "/ home / user / videos folder / *. Avi" -mtime +7 -exec rm -f
Но, как вы видите, в папке видео есть пробел, поэтому мне пришлось указывать этот путь в кавычках. Но будет ли звездочка по-прежнему выполнять свою работу по поиску всех файлов AVI, или Linux теперь будет считать, что звездочка - это настоящее имя файла?
Давайте просто предположим, что я не хотел удалять пространство в пути с помощью переименование папки.
Вам нужно немного переформатировать команду, чтобы она заработала.
Попробуйте:
find "/home/user/videos folder" -name "*.avi" -mtime +7 -exec rm -f {} \;
Или, в GNU find, добиться того же самого без -exec:
find "/home/user/videos folder" -name "*.avi" -mtime +7 -delete
Первый аргумент для поиска - папка, в которой нужно искать - вы не должны пытаться поместить весь свой фильтр здесь, только отправную точку. Затем используйте -name
, чтобы указать, какой шаблон искать. Вы можете попробовать это без -exec
или -delete
сначала, пока вы не будете удовлетворены, тогда вы не нанесете никакого ущерба, попробовав это.
Заключение аргумента в кавычки в основном не дает оболочке вмешиваться в него. Если вы используете -name *.avi
, то аргумент, который увидит find
, может быть чем угодно, потому что оболочка проанализирует его (и заменит его содержимым текущего каталога, оканчивающегося на .avi) перед вызовом find
. Это обычно плохо и приведет к неожиданным результатам. find
знает, как разобрать *
себя.