Проблема в том, что / home / * / mail / new / *
расширяется до слишком большого количества имен файлов. Самое простое решение - вместо этого удалить каталог:
rm -rf /home/*/mail/new/
Или используйте команду find
. Должно сработать, просто будет медленнее.
Или, если вам нужны новые
каталоги, используйте цикл для их поиска, удаления и воссоздания:
for d in /home/*/mail/new/; do
rm -rf "$d" && mkdir "$d"
done
Цикл, который вы пытались написать (но не используйте его, это очень медленно и неэффективно) выглядит примерно так:
for f in /home/*/mail/new/* /home/*/mail/new/.*; do
rm -rf "$f"
done
Нет необходимости проверять файлы, если вы хотите удалить все, просто используйте rm -rf
, и каталоги и файлы могут быть удалены одной и той же командой. Он будет жаловаться на невозможность удаления .
и ..
, но вы можете игнорировать это. Или, если вы хотите быть очень чистым и избежать ошибок, вы можете сделать это в bash:
shopt -s dotglob
for f in /home/*/mail/new/*; do
rm -rf "$f"
done