![](/img/trans.png)
[英]I want to delete all the files under a directory using shell script, passing file directory as an argument
[英]Shell Script for Delete all files in directory and print count of deleted files
我想删除目录中的所有文件,并使用Shell脚本打印已删除文件的计数。
这是我删除所有文件的shell脚本
#!/bin/sh
rm -rf /Directory/SubDirectory/*
我试过了
rm -rf /Directory/SubDirectory/* | wc -l
Shell脚本删除所有文件,但显示为0
我的预期输出为100个文件已删除。
问题是,默认情况下, rm
不输出任何内容,因此wc
没什么可计数的。
您可以将-v
选项用于rm(检查手册页)
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
标志-v或--verbose用于解释正在执行的操作。 输出将如下所示:
removed 'tmp/1
removed 'tmp/2'
removed 'tmp/3'
removed directory 'tmp/'
通过输出通过| wc -l
| wc -l
您将计算其所有记录。 值得一提的是,它将同时统计已删除的文件和目录。 因此,如果只希望计算文件数 ,则应使用
rm -rfv rootDir | grep -v directory | wc -l
rm -rfv rootDir /目录/ * | wc -l
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.