Я хочу удалить любой файл, который выглядит wordpress-891.sql
из текущего каталога (не внутри подкаталогов).
Будет rm wordpress-*.sql
ли уловка, или это также удалит совпадения из подкаталогов?
command-line
bash
HorusCoding
источник
источник
rm
не выполняет расширение имени файла ...rm "foo*"
попытается удалить файл с буквенной звездочкой в имени.Ответы:
Нет. Нормальная глобализация
*
не рекурсивна и не являетсяrm
.Если имя каталога совпадает, оно не будет удалено - вам нужен
-r
флаг, чтобы удалить каталог.Так что это безопасно, если вы уверены, что хотите удалить эти файлы.
Вы также можете сделать
rm
интерактивныйзатем запросит подтверждение перед удалением каждого файла
источник
Да, это помогает вам и удаляет все файлы с этой схемой в текущем каталоге. И НЕТ, он не удаляет файлы в подкаталогах.
Когда вы не уверены, что происходит, когда вы запускаете такую команду:
затем просто запустите его, используя
ls
:файлы, которые вы видите в выводе, будут удалены.
Когда вы пытаетесь получить список вроде:,
foo*
лучше использовать-d
переключатель с,ls
чтобы предотвратить вывод списка файлов в каталоге с именемfoobar/
и т. Д.Этот прием работает для команд, которые не используются для рекурсивного выполнения работы.
Другая вещь, которую вы можете сделать, это набрать желаемый ввод, например:
wordpress-*
затем нажать Ctrl+ Alt+ *, и теперь все совпадения будут напечатаны автоматически перед вашей командой.источник
printf "%s\n" wordpress-*.sql
echo rm file*
. Особенно ищите враждебные имена, например,-rf
rm ./*
илиrm -- *
.xargs -0
@DavidFoersterls foo*
и у вас есть каталог с именемfoobar
, вы также получите список содержимого этого каталога, так что обычноеls
не совсем лучший способ, чтоrm
ударитНет,
rm
не рекурсивно через подкаталоги.См. Удаление подходящих файлов во всех подкаталогах - SuperUser для методов удаления файлов в подкаталогах.
Если вас беспокоит случайное удаление чего-то важного, используйте
gvfs-trash
(который отправляет файлы в корзину) вместоrm
(который навсегда удаляет файлы).источник
gvfs-trash
упоминание, узнал что-то сегодня, вряд ли это использовать ...Если вы хотите найти и удалить все соответствующие файлы, такие как
wordpress-*.sql
, вы можете использоватьfind
команду. :)Например, вы хотели бы удалить все подходящие файлы с
wordpress-*.sql
подtest_dir
, сделайте следующее.Всякий раз, когда
find
программа действительно находит соответствующий файл, она пытается выполнить команду, следующую после-exec
опции. В этом случаеrm -f {}
будет выполнено и{}
будет изменено имя файла совпадения. НапримерВы также можете установить глубину подкаталогов с помощью
-maxdepth
опцией.Обратите внимание, что вы должны указать
-maxdepth
опцию перед другими опциями. В противном случае вы можете встретить результаты, которые вы действительно не хотите видеть.источник
-maxdepth
. Используйте,-exec rm -f {} +
а не-exec \;
, или еще лучше, просто-delete