Linux 用于删除目录中的所有文件和打印已删除文件计数的Shell脚本

Linux 用于删除目录中的所有文件和打印已删除文件计数的Shell脚本,linux,shell,Linux,Shell,我想删除目录中的所有文件,并使用shell脚本打印已删除文件的计数 这是我删除所有文件的shell脚本 #!/bin/sh rm -rf /Directory/SubDirectory/* 我试过这个 rm -rf /Directory/SubDirectory/* | wc -l Shell脚本删除所有文件,但将计数显示为0 我的预期输出为100个文件被删除。问题是,默认情况下,rm不输出任何内容,因此wc没有任何可计算的内容 您可以使用rm的-v选项(检查手册页) 另一种方法是使

我想删除目录中的所有文件,并使用shell脚本打印已删除文件的计数

这是我删除所有文件的shell脚本

#!/bin/sh

rm -rf /Directory/SubDirectory/* 
我试过这个

rm -rf /Directory/SubDirectory/*  | wc -l
Shell脚本删除所有文件,但将计数显示为0


我的预期输出为100个文件被删除。

问题是,默认情况下,
rm
不输出任何内容,因此
wc
没有任何可计算的内容

您可以使用rm的
-v
选项(检查手册页)


另一种方法是使用
find

find * -depth -print -delete | wc -l
使用
-depth
指令,以便在目录本身之前删除目录的文件。演示:

$ tree
.
├── a
├── b
├── c
├── d
│   ├── g
│   ├── h
│   ├── i
│   └── k
│       ├── l
│       └── m
├── e
│   └── j
└── f

4 directories, 9 files

$ find * -depth -print -delete | wc -l
13

$ tree
.

0 directories, 0 files
flag-v或--verbose用于解释正在执行的操作。 输出如下:

removed 'tmp/1
removed 'tmp/2'
removed 'tmp/3'
removed directory 'tmp/'
通过将输出传递给
|wc-l
,您将对其所有记录进行计数。 区别在于,它将同时计算删除的文件和目录。因此,如果您只想统计文件,您应该使用


rm-rfv rootDir | grep-v directory | wc-l
rm-rfv rootDir/directory/*| wc-l

谢谢您的支持,先生。我只想删除目录中的文件。不是整个目录。我发现你的第一个答案更合适。还有,有没有办法像if-else条件一样检查目录中是否有任何文件。我是C#开发者,linux新手。我会将文件列表扩展为一个shell数组:
files=(“$dir”/*)
——然后您可以计算数组中的元素数量:
if[${{dir files[@]}-eq 0];然后回音空;fi
——在shell中使用数组真的很难看,您必须非常小心语法,尤其是引用。谢谢您的支持,先生。回答问题时请始终详细描述您的答案。它将帮助其他用户理解您的答案。
removed 'tmp/1
removed 'tmp/2'
removed 'tmp/3'
removed directory 'tmp/'