Что эквивалентно rm `find lib / -name * .swp` без find?

Как и в названии, я хотел бы удалить все файлы в каталоге lib с помощью .swp в конце.

Как я могу это сделать без find :

 rm `find lib/ -name *.swp` 

2 Solutions collect form web for “Что эквивалентно rm `find lib / -name * .swp` без find?”

Выгода заключается в том, что она рекурсивна. Некоторые современные оболочки предлагают рекурсию поиска, но она не входит в стандарт POSIX, поэтому вы не можете полагаться на них, чтобы работать повсюду. Вот пример, который работает в bash 4.0 и выше.

 shopt -s globstar for f in **/*.swp; do rm -- "$f" done 

Что касается команды find, которую у вас уже есть, она будет разбита на любые файлы, содержащие пробелы, такие как пробелы. Вот пример:

 find lib/ -name '*.swp' -exec rm {} + 

С некоторыми версиями find вы можете использовать -delete :

 find lib/ -name '*.swp' -delete 
 cd lib && ls -R | grep '\.swp$' | xargs -d '\n' rm 

Что касается вашего оригинала, я бы сделал это:

 find lib -name '*.swp' | xargs -d '\n' rm 

потому что если find возвращает никаких результатов, вы не получите ошибку.

Вы также можете использовать \! -type d \! -type d поэтому find не возвращает никаких каталогов, которые вызывают *.swp , потому что rm не сможет их удалить. Вы могли бы сделать что-то подобное с моей альтернативой, используя ls -RF потому что каталоги получат ls -RF / не соответствующее регулярному выражению.

  • Почему я не могу удалить «.». каталог?
  • Не может rm-файл, потому что он не существует?
  • fdupes - удалять файлы после сравнения двух каталогов
  • Удаляются ли ссылки между файлом inode и data файла при удалении файла?
  • Какова реальная точка опции -f на rm?
  • Как переопределить опцию в команде aliased?
  • Удаление определенных типов файлов, кроме папки
  • вывод grep в rm
  • Почему rmdir и unlink два отдельных системных вызова?
  • Удаление файла и его символических ссылок
  • Переименовать папку с нечетными символами
  • Linux и Unix - лучшая ОС в мире.