Я хочу запустить такую же команду, в которой будут удалены файлы AVI старше 7 дней:
найти "/ 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 знает, как разбирать *.