使用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
当前回答
因为没人提过
把不想删除的文件复制到安全的地方 删除所有文件 将复制的文件移回原位
其他回答
因为没人提过
把不想删除的文件复制到安全的地方 删除所有文件 将复制的文件移回原位
不要直接执行命令,请将所需文件移动到当前目录之外的临时目录。然后使用rm *或rm -r *删除所有文件。
然后移动所需的文件到当前目录。
使文件不可变。即使root用户也不允许删除它们。
chattr +i textfile.txt backup.tar.gz script.php database.sql info.txt
rm *
所有其他文件都已删除。 最终你可以将它们重置为可变的。
chattr -i *
在Bash中可以使用GLOBIGNORE环境变量。
假设您想删除除php和sql之外的所有文件,那么您可以执行以下操作-
export GLOBIGNORE=*.php:*.sql
rm *
export GLOBIGNORE=
像这样设置GLOBIGNORE会忽略php和sql中的通配符,比如“ls *”或“rm *”。因此,在设置变量后使用“rm *”将只删除txt和tar.gz文件。
假设具有这些名称的文件存在于目录树中的多个位置,并且您希望保存所有这些文件:
find . -type f ! -regex ".*/\(textfile.txt\|backup.tar.gz\|script.php\|database.sql\|info.txt\)" -delete