Рекурсивно удалять файлы

138
задан codeforester 16 April 2018 в 22:01
поделиться

6 ответов

если у вас есть Bash 4.0++

#!/bin/bash
shopt -s globstar
for file in /var/www/html/**/.DS_Store /var/www/html/**/._ 
do
 echo rm "$file"
done
2
ответ дан 23 November 2019 в 23:17
поделиться

Ты можешь переключиться на zsh вместо bash. Это позволяет вам использовать ** для сопоставления файлов в любом месте дерева каталогов:

$ rm /var/www/html/**/_* /var/www/html/**/.DS_Store

Вы также можете комбинировать их следующим образом:

$ rm /var/www/html/**/(_*|.DS_Store)

Zsh имеет много других возможностей, которых не хватает bash, но только для этого стоит сделать переключатель. Он доступен в большинстве (вероятно, во всех) дистрибутивов linux, а также в cygwin и OS X.

Больше информации вы можете найти на сайте zsh.

6
ответ дан 23 November 2019 в 23:17
поделиться

перейдите в каталог и используйте:

find . -name ".DS_Store" -print0 | xargs -0 rm -rf
find . -name "._*" -print0 | xargs -0 rm -rf

Не проверено, сначала попробуйте их без xargs!

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

find /dir/here ...
168
ответ дан 23 November 2019 в 23:17
поделиться
find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete
94
ответ дан 23 November 2019 в 23:17
поделиться
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
4
ответ дан 23 November 2019 в 23:17
поделиться
cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm
cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm
12
ответ дан 23 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: