使用sudo rm -r时,如何删除除以下文件外的所有文件?

textfile.txt
backup.tar.gz
script.php
database.sql
info.txt

当前回答

我正在寻找的答案是运行脚本,但我希望避免删除脚本本身。因此,如果有人正在寻找类似的答案,请执行以下步骤。

创建一个.sh文件并编写以下代码:

    cp my_run_build.sh ../../ 
    rm -rf * cp  
    ../../my_run_build.sh . 
    /*amend rest of the script*/

其他回答

如果你正在使用zsh,我强烈推荐。

rm -rf ^file/folder pattern to avoid

与extended_glob

setopt extended_glob
rm -- ^*.txt
rm -- ^*.(sql|txt)

只是:

rm $(ls -I "*.txt" ) #Deletes file type except *.txt

Or:

rm $(ls -I "*.txt" -I "*.pdf" ) #Deletes file types except *.txt & *.pdf
rm !(textfile.txt|backup.tar.gz|script.php|database.sql|info.txt)

extglob(扩展模式匹配)需要在BASH中启用(如果它没有启用):

shopt -s extglob

删除除file.name以外的所有内容:

ls -d /path/to/your/files/* |grep -v file.name|xargs rm -rf

你可以为它写一个for循环…%)

for x in *
do
        if [ "$x" != "exclude_criteria" ]
        then
                rm -f $x;
        fi
done;