繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM