REJECT
на OUTPUT
не имеет никакого смысла; a REJECT
возвратит пакет ICMP, который должен был бы пересечь сеть.
Добавьте новое -j LOG
как Ваше последнее правило (поэтому перед DROP
политика) для наблюдения, что получает это далеко в OUTPUT
цепочка.
Сделать rm
в функцию путем добавления этого к файлу инициализации оболочки (принимающий подобный Границе синтаксис):
vrm() {
for f do
rm -- "$f" && printf 'Deleted %s\n' "$f"
done
}
Можно затем назвать его как vrm foo bar baz
.
find myfile -depth -exec sh -c 'for f do
rm -rf -- "$f" && printf "Removed ‘%s’\n" "$f"
done' sh {} +
Или:
find myfile -depth -exec rm -rf -- {} \; \
-exec printf "Removed ‘%s’\n" {} \;
мог быть запуск.
Если у Вас есть доступ к GNU find
, возможно как gfind
или как /opt/gnu/bin/find
:
gfind myfile -delete -printf 'Removed ‘%p’\n'
было бы намного более эффективным, поскольку это не выполнит один (или больше) команда на файл как другие.
Но если Вы имеете gfind
, Вы можете также иметь grm
...
так как @terdon пропустил флаг-r:
#!/bin/bash
vrrm(){
for f in "$@"; do
if [ -d "$f" ]; then
gfind "$f" -type f -print0|tee >(gxargs -0 rm) |gxargs -0 echo -- removing file
gfind "$f" -depth -type d -print0|tee >(gxargs -0 rmdir)|gxargs -0 echo -- removing directory
else
rm "$f" && echo Deleted $f
fi
done
}
-print0
или -0
на AIX. Отметьте это [ -d
возвратите true для символьных ссылок на каталоги. -type f
регулярные файлы только, это не противоположность -type d
. echo
расширяется escape-последовательности так не могут использоваться для произвольных данных. AIX sh
не поддерживает >()
. Существует отсутствие --
.
– Stéphane Chazelas
27.11.2013, 21:16
AIX'S Опция
-E
аналогичен GNU RM
-V
, из PAGE
:
-e
Displays a message after each file is deleted.
Использование его производит этот результат:
# rm -e test.txt
rm: Removing test.txt