使用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
当前回答
我正在寻找的答案是运行脚本,但我希望避免删除脚本本身。因此,如果有人正在寻找类似的答案,请执行以下步骤。
创建一个.sh文件并编写以下代码:
cp my_run_build.sh ../../
rm -rf * cp
../../my_run_build.sh .
/*amend rest of the script*/
其他回答
只是:
rm $(ls -I "*.txt" ) #Deletes file type except *.txt
Or:
rm $(ls -I "*.txt" -I "*.pdf" ) #Deletes file types except *.txt & *.pdf
删除除file.name以外的所有内容:
ls -d /path/to/your/files/* |grep -v file.name|xargs rm -rf
假设具有这些名称的文件存在于目录树中的多个位置,并且您希望保存所有这些文件:
find . -type f ! -regex ".*/\(textfile.txt\|backup.tar.gz\|script.php\|database.sql\|info.txt\)" -delete
如果你正在使用zsh,我强烈推荐。
rm -rf ^file/folder pattern to avoid
与extended_glob
setopt extended_glob
rm -- ^*.txt
rm -- ^*.(sql|txt)
您可以使用两个命令序列来完成此操作。 首先定义一个数组,其中包含你不想排除的文件的名称:
files=( backup.tar.gz script.php database.sql info.txt )
在此之后,循环遍历你想要排除的目录中的所有文件,检查文件名是否在你不想排除的数组中;如果不是,然后删除文件。
for file in *; do
if [[ ! " ${files[@]} " ~= "$file" ]];then
rm "$file"
fi
done