ルートディレクトリから始めてツリーを再帰的に移動したいと思います。ディレクトリに.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