linux - 删除目录中除列表中提到的文件之外的所有文件

标签 linux bash shell

我有一个名为 a00 的目录,其中包含 3000 个扩展名为 .SAC 的文件。我有一个名为 gd.list 的文本文件,其中包含这 3000 个文件中的 88 个文件的名称。我正在尝试编写一个代码来删除除 gd.list 中提到的文件之外的所有 .SAC 文件

如何使用 shell/bash 做到这一点?

最佳答案

rm 命令已被注释掉,以便您可以检查并验证它是否按需要工作。然后只需取消注释该行即可。

检查目录部分将确保您不会意外地从错误的目录运行脚本并破坏错误的文件。

您可以删除 echo 删除行以静默运行。

#!/bin/bash

cd /home/me/myfolder2tocleanup/

# Exit if the directory isn't found.
if (($?>0)); then
    echo "Can't find work dir... exiting"
    exit
fi

for i in *; do
    if ! grep -qxFe "$i" filelist.txt; then
        echo "Deleting: $i"
        # the next line is commented out.  Test it.  Then uncomment to removed the files
        # rm "$i"
    fi
done

您可以在这里找到答案 https://askubuntu.com/questions/830776/remove-file-but-exclude-all-files-in-a-list作者:L.D.詹姆斯

关于linux - 删除目录中除列表中提到的文件之外的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729574/

相关文章:

linux - 更新到 OpenGL 3.2 英特尔赛扬 archLinux

ruby - -bash :/usr/local/bin/heroku:/usr/local/bin/ruby: bad interpreter: No such file or directory

linux - 为 ARM 架构构建 libsndfile 库

c# - mono : Wrong Process. ProcessName 中错误的解决方法

bash - 如何将ssh作业发送到后台

linux - Shell 脚本 ls 指向第 n 个文件

python - 使用 Shell 脚本在 mySQL Workbench 模型中添加列

shell - 带参数的 ZSH 别名

linux - 如何在 linux 中创建一个可以从多个进程读取而不消耗数据的文件描述符?

bash - grep - 如何输出进度条或状态