在子文件夹bash中查找文件

时间:2017-11-02 16:02:32

标签: bash shell

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

例如:

  • ABC
    • A.TXT
    • b.txt
  • EFG
    • e.txt
  • x.txt

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

3 个答案:

答案 0 :(得分:2)

在编写bash脚本时,首先要确定的是决定要使用哪个命令。

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

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

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

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

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

答案 1 :(得分:1)

使用 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

答案 2 :(得分:0)

这一个

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