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

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

137 голосов
/ 07 января 2010

Есть ли у кого-нибудь решение удалить те надоедливые файлы ._ и .DS_Store, которые получаются после перемещения файлов с Mac на сервер Linux?

указать начальный каталог и отпустить? как / var / www / html / down ...

Ответы [ 12 ]

167 голосов
/ 07 января 2010

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

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

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

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

find /dir/here ...
94 голосов
/ 07 января 2010
find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete
84 голосов
/ 18 мая 2013

Более новые findutils поддерживают -delete, поэтому:

find . -name ".DS_Store" -delete

Добавьте -print, чтобы также получить список удалений.

Команда будет работать для вас, если у вас есть современная система POSIX, я считаю. По крайней мере, он работает для меня на OS X 10.8 и работает для тех, кто тестировал его на macOS 10.12 (Mojave).

Благодарим @ephemient в комментарии к сообщению @ X-Istence (хотя он был достаточно полезен, чтобы оправдать свой ответ).

18 голосов
/ 20 ноября 2011

Простая команда:

rm `find ./ -name '.DS_Store'` -rf
rm `find ./ -name '._'` -rf

Удачи!

12 голосов
/ 07 января 2010
cd /var/www/html && find . -name '.DS_Store' -print0 | xargs -0 rm
cd /var/www/html && find . -name '._*' -print0 | xargs -0 rm
6 голосов
/ 07 января 2010

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

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

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

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

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

Более подробную информацию можно найти на zsh сайте .

4 голосов
/ 07 января 2010
find . -name "FILE-TO-FIND"-exec rm -rf {} \;
3 голосов
/ 03 января 2016

Лучше увидеть, что удаляется, добавив -print к этому ответу

find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete -print
3 голосов
/ 28 ноября 2015

Пример рекурсивного удаления "Thumbs.db";

find . -iname "Thumbs.db" -print0 | xargs -0 rm -rf

Подтвердить по:

find . -iname "Thumbs.db"

Теперь это не должно отображать записи с «Thumbs.db» внутри текущего пути.

2 голосов
/ 07 января 2010

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

#!/bin/bash
shopt -s globstar
for file in /var/www/html/**/.DS_Store /var/www/html/**/._ 
do
 echo rm "$file"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...