«Rm files *» удаляет все соответствия из всех подкаталогов?

Я хочу удалить любой файл, который выглядит как wordpress-891.sql из текущего каталога (не внутри подкаталогов).

Будет ли rm wordpress-*.sql делать трюк или он также удалит совпадения из подкаталогов?

Нет. Нормальное globbing * не является рекурсивным и не является rm .

Если имя каталога совпадает, оно не будет удалено – вам нужен флаг -r для удаления каталога.

Поэтому безопасно это делать, если вы уверены, что хотите удалить эти файлы.

Вы также можете сделать rm интерактивным

 rm -i wordpress-*.sql 

то он будет запрашивать подтверждение перед удалением каждого файла

Да, это делает трюк для вас и удаляет все файлы с этой схемой в текущем каталоге. И НЕТ, он не удаляет файлы в подкаталогах.

Когда вы не уверены, что произойдет, когда вы запустите команду, например:

 rm wordpress-*.sql 

затем просто запустите его, используя ls :

 ls wordpress-*.sql 

файлы, которые вы видите на выходе, являются теми, которые будут удалены.

Когда вы пытаетесь получить список вроде: foo* , лучше использовать -d переключатель с ls чтобы предотвратить листинг файлов с каталогом foobar/ .

 ls -d foo* 

Этот трюк работает для команд, которые не используются для рекурсивного выполнения задания.

Другая вещь, которую вы можете сделать, – ввести желаемый ввод, например: wordpress-* затем нажать Ctrl + Alt + * , и теперь все совпадения будут автоматически введены перед вашей командой.

Нет, rm не рекурсирует через подкаталоги.

См. Раздел « Удалить совпадающие файлы» во всех подкаталогах – SuperUser для методов удаления файлов в подкаталогах.

Если вы когда-либо беспокоились о случайном удалении чего-то важного, используйте gvfs-trash (который отправляет файлы в корзину) вместо rm (который навсегда удаляет файлы).

Если вы хотите найти и удалить все соответствующие файлы, такие как wordpress-*.sql , вы можете использовать команду find . 🙂

Например, вы хотите удалить все соответствующие файлы с помощью wordpress-*.sql test_dir , выполните следующие действия.

 cd test_dir find . -name "wordpress-*.sql" -exec rm -f {} \; 

Всякий раз, когда программа действительно находит соответствующий файл, он пытается выполнить команду после опции -exec . В этом случае выполняется rm -f {} и {} будет изменено на имя файла соответствия. Например

 rm -f wordpress-169.sql 

Вы также можете установить глубину подкаталогов с параметром -maxdepth .

 cd test_dir find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \; 

Обратите внимание, что перед другими параметрами вы должны указать параметр -maxdepth . В противном случае вы можете встретить результаты, которые вы действительно не хотите видеть.