Оптимизированный способ перечислить и удалить файлы

Это будет зависеть от операционной системы. Для Linux Вы могли сделать это:

#!/bin/ksh

if [ "$TERM" == "linux" ]; then
  echo "I'm in a virtual console"
else
  echo "I'm not in a virtual console"
fi

Это, конечно, предполагает, что Вы не изменились TERM переменная среды самостоятельно, которая автоматически установлена на linux только, когда Вы входите в виртуальную консоль (в соответствии с Ubuntu, она установлена на xterm в консольных приложениях, но это может варьироваться между Ose). Проверьте содержание ТЕРМИНА в различных приложениях, которые Вы используете, и набор как соответствующий.

2
03.10.2013, 14:03
2 ответа
find . -type f -name '*.php' -print0 | tee list | tr \\0 \\n
xargs -r0 rm -f < list

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

find . -name '*.php' -type f -print -delete

(отметьте это -print0, -delete, -r, -0 не являются стандартными, но не поддерживаются реализацией GNU),

Также остерегайтесь этого в то время как find -delete относительно безопасно, в первом решении, кто-то мог переименовать каталоги к символьным ссылкам на некоторые чувствительные области между временем, которое Вы выполняете find и xargs управляйте и заставьте Вас удалить файлы, что Вы не намеревались. Выполнение find дважды, во второй раз с -delete избежал бы этого.

7
27.01.2020, 21:51

Так как Вам нужно .php и .xml регистрирует find команда должна быть похожей:

find . \( -name '*.php' -o -name '*.xml' \) -type f -print -exec rm {} +

+ instrucs find использовать rm только однажды на блок файлов. Если мы использовали \; мы выполнили бы тот rm команда для каждого файла.

1
27.01.2020, 21:51
  • 1
    Ahh... охлаждает путь.. на самом деле у меня есть довольно длинный сценарий со многими файлами как xml, php, папки SVN и т.д. Для краткости я упомянул только несколько их. –  Novice User 03.10.2013, 14:40
  • 2
    Хороший быстрый и короткий! –  holasz 03.10.2013, 14:47
  • 3
    Отметьте это -exec rm {} + скорость, законченная -exec rm {} \;, но не -print0 | xargs -r0 rm ни -delete но менее безопасно, чем -execdir rm {} \; или -delete из-за состояния состязания, упомянутого в моем ответе. –  Stéphane Chazelas 03.10.2013, 15:02
  • 4
    Ну, так как Вы вызываете tee tr и xargs означая, что три различных внешних программы порождены, команда не будет быстра, как Вы думаете. Также OP просит .xml файлы, которые будут включены, который не охвачен в Вашем ответе. Мне очень любопытно видеть сравнительный тест на командах выше. –  Valentin Bajrami 03.10.2013, 15:19
  • 5
    я рекомендовал бы сначала использовать "комнату эха" вместо непосредственно "комнаты" и только вынуть "эхо" однажды один, это уверено, что это - достаточно безопасный ^^. Я предпочитаю ответ Stephane для стороны безопасности. –  Olivier Dulac 03.10.2013, 18:04

Теги

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