如果 .picasa.ini 是目录中唯一的文件,如何删除目录和文件?

如果 .picasa.ini 是目录中唯一的文件,如何删除目录和文件?

我想从根目录开始并递归遍历树。如果目录中只有一个名为 .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

相关内容