[118092] Код ниже будет искать не только каталог [118604] old[118605], но и его подкаталоги и удалять файлы из каталога [118606] new[118607], которые имеют то же самое имя и путь. Это будет работать со всеми усадьбами враждебных имён файлов (пробелы, новые строки и т.д.):
Аргумент [118608]-тип f[118609] говорит [118610]find[118611] искать файлы, а не каталоги. Аргумент [118612]-exec ... \;[118613] говорит [118614] найти[118615], что как только он найдет файл в [118616] старом [118617], он должен выполнить команду [118618]rm -f[118619] на своем контрагенте в подкаталоге [118620] new[118621].
Это * подбирает как файлы и каталогов . Чтобы удалить файлы только попробуйте это
find /media/d/data/ -maxdepth 1 -type f -delete
по умолчанию RM
не удаляет каталоги. Если вы хотите, чтобы каталоги были удалены, используйте RM -RF
. Если вы хотите подавить сообщение, используйте RM
. Обратите внимание, что все другие сообщения об ошибке тоже подавляются.
RM
Удаляет файлы, которые вы его говорите. *
расширяется ко всем файлам (включая каталоги), поэтому вы говорите RM
, чтобы удалить каталоги, которые он не будет делать.
Большинство оболочек не имеют способа исключить каталоги от образца подстановки. Узоры подстановочных знаков только соответствуют файлам по имени, а не по типу. Вместо этого можно использовать
.
ZSH имеет Challifiers Challifiers , которые могут соответствовать файлам по типу, дату и т. Д. в ZSH , вы можете использовать
rm *(.)
, чтобы удалить все обычные файлы, либо варианты, как RM * (-.)
Чтобы удалить обычные файлы и символическую ссылку на регулярные файлы, RM * (^ /)
для удаления всех файлов, кроме каталогов и т. Д.
Обратите внимание, что *
опускает точечные файлы (файлы, имя которых начинается с .
). Найти
будет включать их. В ZSH, *
по умолчанию опускает точечные файлы; Вы можете добавить D
D
в скобках (например, RM * (. d)
), чтобы включить их.