【问题标题】:How to recursively remove all files in a directory except specific file type and folder?如何递归删除目录中除特定文件类型和文件夹之外的所有文件?
【发布时间】:2019-12-04 14:31:34
【问题描述】:

假设我有一个目录,其中包含:

.\Folder\Folder1\exe\a.exe
.\Folder\Folder1\dll\b.dll
.\Folder\Folder1\txt\c.txt
.\Folder\Folder2\exe\a.exe
.\Folder\Folder2\dll\b.dll
.\Folder\Folder2\txt\c.txt
.
.
.

现在我想递归地从 .\Folder\ 中删除,除了所有 *.txt,这样:

.\Folder\Folder1\exe\
.\Folder\Folder1\dll\
.\Folder\Folder1\txt\c.txt
.\Folder\Folder2\exe\
.\Folder\Folder2\dll\
.\Folder\Folder2\txt\c.txt
.
.
.

任何人都可以建议使用 rm 来完成这项工作的命令吗?谢谢!

我试过了:

cd .\Folder
shopt -s extglob

rm -rf !("*.txt")

但它会删除 .\Folder 中的所有文件和目录

【问题讨论】:

    标签: rm


    【解决方案1】:

    我认为正确的命令是:

    rm -vrf ./Folder/Folder*/*/!(*.txt)
    

    【讨论】:

    • 如果只是删除文件 txt 只需使用:rm -rf ./Folder/Folder*/*/!("*.txt")
    • sry 答案是:rm -vrf ./Folder/Folder*/*/!(*.txt) 。我添加 -v 选项以了解我删除的内容。不同的是字符“
    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2013-07-22
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多