.picasa.iniがディレクトリ内の唯一のファイルである場合、ディレクトリとファイルをどのように削除しますか?

.picasa.iniがディレクトリ内の唯一のファイルである場合、ディレクトリとファイルをどのように削除しますか?

ルートディレクトリから始めてツリーを再帰的に移動したいと思います。ディレクトリに.picasa.iniというファイルが1つしかない場合は、そのディレクトリとファイルを削除したいと思います。

Findコマンドで複雑な検索ができるように見えますが、この種の条件に基づいて何かを行うことが可能かどうかはわかりません。

私は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

関連情報