найдите и удалите, дает ложное состояние

[12110]debian[11699] и его производные (и, вероятно, большинство других дистрибутивов) поставляются с [11700]busybox[11701], который используется в [11702]initramfs[11703]. [12111]busybox[11705] объединяет большинство утилит командной строки в один исполняемый файл.[12112] Вы можете временно синхронизировать [11706]/bin/rm[11707] с [11708]/bin/busybox[11709]:[12113]Чтобы получить работающую [11710]rm[11711] (после чего вы можете сделать вашу [11712]apt-get install --reinstall coreutils[11713]).[12114] Этот же метод можно использовать для всех других утилит, которые включены в [11714] busybox [11715]. Этот список варьируется от одной установки к другой. Получить список можно с помощью [11716]busybox --list[11717].[12115]Обратите внимание, однако, что это ограниченные версии соответствующих утилит. Иногда они поддерживают расширения GNU, но обычно нет, а некоторые из них даже не поддерживают все стандартные возможности/POSIX (некоторые возможности могут быть включены/выключены во время компиляции). [12116]В качестве альтернативы вы можете использовать [11718]zsh[11719]'s builtin rm: [12117] Модуль [11720]zsh/files[11721] предоставляет несколько дополнительных команд builtin ([11722]rm[11723], [11724]mv[11725], [11726]ln[11727], [11728]mkdir[11729], [11730]rmdir[11731], [11732]chown[11733], [11734]chmod[11735], [11736]sync[11737]). Это полезно в таких ситуациях, или когда нельзя вскрыть больше процессов, но запущен интерактивный [11738]zsh[11739]. [12118]ksh93[11741] также имеет ряд дополнительных/операционных команд buitin, но не [11742]rm[11743] среди них ([11744]basename[11745], [11746]chmod[11747], [11748]dirname[11749], [11750]getconf[11751], [11752] голова [11753], [11754]мкдир [11755], [11756] логнейм [11757], [11758] кот [11759], [11760] cmp [11761], [11762] cut [11763], [11764] uname [11765], [11766] wc[11767], [11768] синхронизация [11769])). Вы можете вызвать их с помощью:[12119] в скрипте [11770]ksh93[11771]..
2
13.04.2017, 15:37
2 ответа

, Если вы используете - чернослив опция, как предложено в этот ответ, сообщение об ошибке, не происходят.

Заключение в кавычки из вышеупомянутого ответа,

Использование - чернослив на каталогах, к которым вы собираетесь удалить так или иначе сказать находят, чтобы не потрудиться пытаться найти файлы в них.

Тестирование

mkdir koko
cd koko
touch file{1,2}
cd ..
find . -type d -name "koko" -prune -exec rm -rf {} \;

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

1
27.01.2020, 22:13

проблема состоит в том, что находят , нашел каталог, он соответствует вашему выбору, и затем команда выполняется. Однако находят , хочет сделать то, что прибывает естественно, и это рекурсивно вызывает через дерево каталогов, но каталог, которым это просто найдено, исчез! Следовательно сообщение об ошибке.

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

1
27.01.2020, 22:13

Теги

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