【问题标题】:How to delete file.* but keep file.txt?如何删除 file.* 但保留 file.txt?
【发布时间】:2018-06-29 00:17:10
【问题描述】:

在bash中,如何使用file*删除所有以file开头的文件,但保留file.txt

我试过this

shopt -s extglob

rm file* !(file.txt)

但是file.txt 还是被删除了。

PS:我只需要删除以file开头的文件,而不是所有文件。例如。我想要一个名为 food.txt 的文件仍然保留。

【问题讨论】:

标签: bash wildcard delete-file


【解决方案1】:

find 命令可以在这里为您提供帮助。例如:

find . -maxdepth 1 -not -name 'file.*' -not -name '*.txt' -delete

【讨论】:

  • 但是我只需要删除以file开头的文件,而不是所有文件。
  • 道歉。很仓促。修改后的建议并经过测试。
【解决方案2】:

find 方法:

find . -maxdepth 1 -type f -name 'file*' ! -name "file.txt" -delete

【讨论】:

    【解决方案3】:

    您需要使用“否定”模式匹配作为文件扩展名:

    $ ls file.*
    file.csv  file.json  file.txt  file.xml
    
    $ ls file.!(txt)
    file.csv  file.json  file.xml
    

    【讨论】:

    • 如果您收到类似bash: !: event not found 的错误,请使用shopt -s extglob 启用 bash 的扩展通配符
    猜你喜欢
    • 1970-01-01
    • 2020-11-10
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多