![使用交互式 rm (rm -i) 计算已删除文件的数量](https://linux22.com/image/70929/%E4%BD%BF%E7%94%A8%E4%BA%A4%E4%BA%92%E5%BC%8F%20rm%20(rm%20-i)%20%E8%AE%A1%E7%AE%97%E5%B7%B2%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E7%9A%84%E6%95%B0%E9%87%8F.png)
我想计算交互式删除的文件和目录的数量:
for f in /tmp/mydir/* ; do
rm -ir "$f"
done
如何以最简洁/优雅的方式做到这一点?
例子:
abc@def:/tmp/mydir$ tree
.
├── 1
├── 2
├── 3
├── 4
├── A
│ ├── 1
│ ├── 2
│ └── 3
├── B
│ ├── 1
│ └── 2
└── C
3 directories, 9 files
如果所有答案都是y(是的),那么我期待答案:
- 7(计数:
1
、2
、3
、4
、A
、B
、C
)或: - 10(数数:
1
,2
,3
,4
,A/1
,A/2
,A/3
,B/1
,B/2
,C
)。
两个版本都受欢迎。
我知道我可以在运行交互式操作之前和之后计算文件/目录的数量rm
,但事实并非如此,因为实际上我是在文本文件中存储的文件之间进行迭代。
答案1
只需使用:
rm -vri files | wc -l
也将包括 dirs (即删除A
)。这将起作用,因为-v
只会将成功removed ’file’
(或目录)输出发送到stdout
,而所有其他输出都发送到stderr
。
在您的示例中,输出将为12
,因为有 3 个目录和 9 个文件。