Пакетный поиск и удаление файлов в Linux с помощью команды find find - PullRequest
8 голосов
/ 05 июня 2011

Привет всем Я пытаюсь удалить все файлы thumbs.db в разделе Windows, используя команду find в Ubuntu:

find . -iname "*.db"|while read junk;do rm -rfv $junk;done

Но это не работает для меня, и ничего не происходит! Я делал этот трюк, чтобы удалить мои ненужные файлы раньше в предыдущей версии Ubuntu, но теперь в последней версии Ubuntu я не могу. Есть ли ошибка в моей команде?

Ответы [ 5 ]

38 голосов
/ 05 июня 2011

Я бы сделал это следующим образом:

find . -iname 'thumbs.db' -exec rm -rfv {} +

Таким образом, он все еще работает, даже если ваши каталоги содержат пробелы в своих именах.

30 голосов
/ 16 июля 2013

просто чтобы выбросить это туда

find . -name "*.pyc" -delete
6 голосов
/ 05 июня 2011

Я не уверен, почему вы используете while.

find . -iname 'thumbs.db' -exec rm -rfv {} \;

... должно хватить (и удалять только те файлы, которые вы хотите, а не файлы BDB, которые могут лежать вокруг).

1 голос
/ 05 июня 2011

Код выглядит хорошо и работает на Arch и Debian.Может быть, нет файлов, соответствующих «* .db»?

Как примечание: я не могу быть хорошей идеей удалить все файлы с суффиксом «.db», поскольку вы можете случайно удалить другие файлы, кроме «Thumbs.db "

0 голосов
/ 05 июня 2011

Сначала проверьте, найдена ли первая часть вашей команды:

.-iname "* .db"

возвращает что угодно.

Если это так, вы можете использовать xargs для выполнения своей задачи следующим образом:

найти.-имя "* .db" |xargs rm -rfv

ОБНОВЛЕНИЕ: Из комментариев это небезопасно, особенно если в именах каталогов / файлов есть пробелы.Вам нужно будет использовать -print0 / xargs -0, чтобы сделать его безопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...