我想删除目录中的所有文件并使用shell脚本打印已删除文件的数量。
这是我删除所有文件的shell脚本
{{ url('/store-record') }}
我尝试过
#!/bin/sh
rm -rf /Directory/SubDirectory/*
Shell脚本删除所有文件,但显示计数为0
我的预期输出为100个文件被删除。
答案 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>