Будет ли эта команда «найти и удалить» работать со звездочкой даже с кавычками?

Я хочу запустить команду, подобную этой, где AVI-файлы старше 7 дней будут удалены:

find "/ home / user / videos folder / *. Avi" -mtime +7 -exec rm -f

Но, как вы видите, в папке видео есть пробел, поэтому мне пришлось указывать этот путь в кавычках. Но будет ли звездочка по-прежнему выполнять свою работу по поиску всех файлов AVI, или Linux теперь будет считать, что звездочка - это настоящее имя файла?

Давайте просто предположим, что я не хотел удалять пространство в пути с помощью переименование папки.

2
задан 10 December 2011 в 19:36

1 ответ

Вам нужно немного переформатировать команду, чтобы она заработала.

Попробуйте:

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 знает, как разобрать * себя.

0
ответ дан 10 December 2011 в 19:36

Другие вопросы по тегам:

Похожие вопросы: