【问题标题】:Find files inside subfolders bash在子文件夹bash中查找文件
【发布时间】:2017-11-03 00:17:05
【问题描述】:

我想编写一个脚本,它接收一个文件夹并删除该文件夹中子文件夹中的所有文件。

例如:

  • ABC
    • a.txt
    • b.txt
  • efg
    • e.txt
  • x.txt

脚本在运行时,应该删除 a.txt、b.txt 和 e.txt 而不是 x.txt(因为它不在文件夹内)。

【问题讨论】:

    标签: bash shell


    【解决方案1】:

    在编写 bash 脚本时要决定的第一件事是决定要使用哪个命令。

    find 命令递归返回文件夹中的所有文件。

    find ${dir} -name "*.txt" -delete

    上述命令在目录(存储在变量中的目录)中搜索以.txt 结尾的文件名并删除它们。 但是,如果您只想在子目录中查找文件怎么办?

    您可以使用: find ${dir}/*/ -name "*.txt" -delete

    请注意我们如何添加/*/ 来表示该文件夹内所有文件夹的查找。 您还可以添加检查 -type f 以确认我们正在删除文件而不是其他任何内容。

    【讨论】:

      【解决方案2】:

      使用 find 命令:

      示例test 文件夹结构:

      $ tree test
      test
      ├── abc
      │   ├── a.txt
      │   └── b.txt
      ├── efg
      │   └── e.txt
      └── x.txt
      

      关键命令:

      find test -mindepth 2 -type f -delete
      

      查看结果:

      $ tree test
      test
      ├── abc
      ├── efg
      └── x.txt
      

      【讨论】:

        【解决方案3】:

        这里是这个

        find */ -name *.txt -type f | xargs rm -f 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-05
          • 2011-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多