Рекурсивное удаление файлов и папок в подкаталогах

Я получал ту же ошибку «Отказано в подключении к серверу ключей gpg» при использовании gpg в командной строке, GPA и KGpg. Я использую gnupg 2.1.18 -8 на Debian Sid. Я включил отладку в dirmngr следующим образом:

sudo pkill dirmngr; dirmngr --debug-all --daemon --standard-resolver

В выводе отладки на консоли сообщалось об отсутствии соединения Tor. Оказалось, что в $HOME/.gnupg/dirmngrбыло включено «использовать -tor». (Спасибо, gpgconf! )Я закомментировал его, оставив пустым dirmngr.conf, и связь с сервером ключей теперь работает нормально.

5
12.11.2019, 22:18
2 ответа

Вы можете сделать это с помощью следующей команды find:

find /path/to/transfer -mindepth 2 -delete
Параметр

-mindepth 2указывает findигнорировать первые два уровня каталогов :саму искомую директорию, а также все файлы и папки, находящиеся непосредственно в ней.

Параметр

-deleteпросто указывает findудалить все файлы.

Вы всегда можете добавить дополнительные параметры (, например -mtime), в соответствии с вашими потребностями.

17
27.01.2020, 20:31

for x in transfer/user* ; do cd $x ; echo rm -R $( ls -1a | grep -v ^./$ | grep -v ^../$ ) ; cd../.. ; done

Прежде чем повторно -запустить команду без слова echo, убедитесь, что это выглядит очень хорошо.

Я хотел бы тщательно проверить это, прежде чем полагаться на него. Я помню случай, когда что-то подобное приводило к ..сопоставлению чего-то для рекурсивного (удаления ), что вызывало нежелательный инцидент с потерей больших объемов данных. В частности, если cd $xдает сбой (, возможно, из-за проблемы с разрешениями ), но тогда cd../..работает, а затем rm -Rзапускается в каталоге более высокого -уровня, тогда вы можете легко закончить вверх рекурсивно удаляя из неправильной области. Вот почему я крайне не решался бы слепо доверять этому до тех пор, пока оно не будет хорошо -доказано.

Это также работало на одной системе, на которой я тестировал, которая использовала bash в Debian. В этой системе ls -1aпоказывал каталоги .и ..с косой чертой после них. Если у вас есть другая команда lsили оболочка, которая действует по-другому, может потребоваться некоторая настройка.

Итак, я определенно рекомендую подумать, возможно ли выполнить проверку вручную, прежде чем продолжить. (И, конечно же, убедитесь, что у вас есть подходящие резервные копии, готовые к работе. Я припоминаю, что слышал о ситуации, когда у кого-то был пользовательский скрипт удаления -, который удалял /users/$1, но затем кто-то еще запускал этот скрипт без параметров, надеясь показать синтаксис. Данные всех пользователей начали удаляться. К счастью, сотрудник, который сделал это, был удивлен тем, как долго выполнялась команда, поэтому он обратился за помощью, и резервные копии были легко доступны и могли быть успешно использованы.)

0
27.01.2020, 20:31

Теги

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