Ignore 'не может удалить `dir`: это сообщение каталога

Команда time не выполняет то, что вы думаете. Фактически, поскольку его цель - рассчитать время выполнения другой команды, запускать ее без аргументов (без команды на время) не имеет особого смысла. (По-видимому, он все еще работает без жалоб!)

Конкретный эффект, который вы здесь видите, заключается в том, что time выводит свою статистику по стандартной ошибке, а не по стандартному выводу (чтобы не мешать выводу что бы вы ни выбрали). Перенаправление стандартного вывода не влияет на стандартный канал ошибок. Попробуйте вместо этого:

time ls 2>time.txt

... где вы перенаправляете стандартную ошибку, а не стандартный вывод. Вывод ls отображается как обычно (стандартный вывод не перенаправляется), но вывод time при стандартной ошибке идет в файл, что, я думаю, вы пытались достигать.

4
26.07.2016, 19:48
3 ответа

Вот:

find ./ -type f -exec rm -f * {} \; 2> /dev/null

Если вы хотите сохранить нетронутыми даже файлы в ваших подкаталогах:

rm -f * 2> /dev/null
1
27.01.2020, 20:55

Вы можете просто отбросить сообщения об ошибках:

rm * 2>/dev/null

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

rm * 2>&1 | grep -v 'cannot remove .*: Is a directory'

В этом случае другие ошибки все равно будут записаны в журнал.

5
27.01.2020, 20:55

В zsh:

rm *(^/)

Другие оболочки не имеют эквивалента глобальных классификаторов zsh. Вместо этого вы можете вызвать find, который способен различать файлы по типу, и указать ему, что не следует обращаться к подкаталогам, отличным от . (начальный каталог).

find . -name . -o -type d -prune -o rm -f {} +

Это удаляет точечные файлы, тогда как * не сопоставляет точечные файлы. Если вы хотите сохранить точечные файлы, скажите find не вызывать rm для них.

find . -name . -o -type d -prune -o ! -name '.*' rm -f {} +

(Вы можете использовать -mindepth, -maxdepth и -delete, но только если вам не нужно, чтобы ваш сценарий выполнялся на системах, где find не имеет этих опций. Опции, которые я использовал, являются переносимыми.)

2
27.01.2020, 20:55

Теги

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