Я хочу удалить любой файл, который похож на , wordpress-891.sql
из текущего каталога (не внутри подкаталогов).
Сработает ли rm wordpress-*.sql
это или также удалит совпадения из подкаталогов?
решение1
Нет. Обычная подстановка *
не является рекурсивной, как и rm
.
Если имя каталога совпадает, он не будет удален — -r
для удаления каталога необходим флаг.
Так что это можно сделать безопасно, если вы уверены, что хотите удалить эти файлы.
Вы также можете сделать rm
интерактивным
rm -i wordpress-*.sql
затем он будет запрашивать подтверждение перед удалением каждого файла
решение2
Да, он делает это за вас и удаляет все файлы с этой схемой в текущем каталоге. И НЕТ, он не удаляет файлы в подкаталогах.
Если вы не уверены, что произойдет при запуске такой команды:
rm wordpress-*.sql
затем просто запустите его с помощью ls
:
ls wordpress-*.sql
файлы, которые вы видите в выводе, — это те, которые будут удалены.
Когда вы пытаетесь получить список, например: foo*
, лучше использовать -d
switch with , ls
чтобы предотвратить вывод списка файлов в каталоге с именем foobar/
и т. д.
ls -d foo*
Этот прием работает для команд, которые не используются для рекурсивного выполнения работы.
Другое, что вы можете сделать, это ввести желаемый ввод, например: wordpress-*
затем нажать Ctrl+ Alt+ *, и теперь все совпадения будут автоматически введены перед вашей командой.
решение3
Нет, rm
не рекурсивно проходит по подкаталогам.
ВидетьУдалить соответствующие файлы во всех подкаталогах - SuperUserдля методов удаления файлов в подкаталогах.
Если вы обеспокоены тем, что можете случайно удалить что-то важное, используйте gvfs-trash
(что отправит файлы в корзину) вместо rm
(что навсегда удалит файлы).
решение4
Если вы хотите найти и удалить все соответствующие файлы, например wordpress-*.sql
, , вы можете использовать find
команду. :)
Например, вы хотите удалить все соответствующие файлы с wordpress-*.sql
помощью test_dir
, выполните следующие действия.
cd test_dir
find . -name "wordpress-*.sql" -exec rm -f {} \;
Всякий раз, когда find
программа действительно находит соответствующий файл, она пытается выполнить команду, следующую за -exec
опцией. В этом случае rm -f {}
будет выполнена и {}
будет изменена на имя соответствующего файла. Например
rm -f wordpress-169.sql
Вы также можете задать глубину подкаталогов с помощью -maxdepth
опции.
cd test_dir
find . -maxdepth 3 -name "wordpress-*.sql" -exec rm -f {} \;
Обратите внимание, что вы должны указать -maxdepth
опцию перед другими опциями. В противном случае вы можете получить результаты, которые вы на самом деле не хотите видеть.