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

时间:2019-06-19 14:48:38

标签: linux shell

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

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

{{ url('/store-record') }}

我尝试过

#!/bin/sh

rm -rf /Directory/SubDirectory/* 

Shell脚本删除所有文件,但显示计数为0

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

3 个答案:

答案 0 :(得分:1)

问题在于,默认情况下,rm不输出任何内容,因此wc无需计数。

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

rm -vrf pattern | wc -l
# or
rm -vrf pattern | echo "$(wc -l) files deleted"

另一种技术是使用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

答案 1 :(得分:1)

标志-v或--verbose用于解释正在执行的操作。 输出将如下所示:

removed 'tmp/1
removed 'tmp/2'
removed 'tmp/3'
removed directory 'tmp/'

通过将输出通过| wc -l,您将计算其所有记录。 值得一提的是,它将同时统计已删除的文件和目录。因此,如果您要仅计算文件,则应使用

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

答案 2 :(得分:1)

rm -rfv rootDir / directory / * | wc -l <​​/ p>