我想从根目录开始并递归遍历树。如果目录中只有一个名为 .picasa.ini 的文件,我想删除该目录和文件
看起来“查找”命令可以进行很多复杂的搜索,但我不知道是否可以根据这种类型的条件执行操作。
我使用的是 Windows 机器,但可以访问 cygwin,它提供了许多命令行工具。
答案1
我不确定它是否可以用单个find
命令来完成,但它肯定可以用一个简单的 bash 脚本来完成。我刚刚在 Cygwin 上对此进行了测试,它按预期工作。您需要更改ROOT_DIR
为要执行此搜索的任何文件系统的根目录(例如/cygdrive/d/
搜索 D 驱动器)。
总体思路是这样的:找到.picasa.ini
树中命名的所有文件。对于每个文件,请查看其目录以查看是否还有其他文件。如果没有,请删除该目录。 (周围的双引号$dir
将删除包含空格的目录。)否则继续。
#!/bin/bash
ROOT_DIR=/
find "$ROOT_DIR" -type f -name '.picasa.ini' | while read file; do
dir=$(dirname "$file")
filecount=$(ls -1A "$dir" | wc -l)
if (( filecount == 1 )); then
rm -rv "$dir"
fi
done