我想编写一个脚本,它接收一个文件夹并删除该文件夹中子文件夹中的所有文件。
例如:
运行时脚本应该删除a.txt,b.txt和e.txt而不是x.txt(因为它不在文件夹中)。
答案 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