使用sudo rm -r时,如何删除除以下文件外的所有文件?
textfile.txt
backup.tar.gz
script.php
database.sql
info.txt
使用sudo rm -r时,如何删除除以下文件外的所有文件?
textfile.txt
backup.tar.gz
script.php
database.sql
info.txt
当前回答
这类似于@siwei-shen的评论,但是您需要-o标志来处理多个模式。-o标志代表'or'
找到。-o -not -name '*ignore2' | xargs rm . type f -not -name '*ignore1' -o -not -name '*ignore2
其他回答
rm !(textfile.txt|backup.tar.gz|script.php|database.sql|info.txt)
extglob(扩展模式匹配)需要在BASH中启用(如果它没有启用):
shopt -s extglob
如果你正在使用zsh,我强烈推荐。
rm -rf ^file/folder pattern to avoid
与extended_glob
setopt extended_glob
rm -- ^*.txt
rm -- ^*.(sql|txt)
因为没人提过
把不想删除的文件复制到安全的地方 删除所有文件 将复制的文件移回原位
假设具有这些名称的文件存在于目录树中的多个位置,并且您希望保存所有这些文件:
find . -type f ! -regex ".*/\(textfile.txt\|backup.tar.gz\|script.php\|database.sql\|info.txt\)" -delete
你可以为它写一个for循环…%)
for x in *
do
if [ "$x" != "exclude_criteria" ]
then
rm -f $x;
fi
done;