私のようなディレクトリツリーがあります。入れ子になったディレクトリを見つけるには?
dir11/dir21/dir31......./dirn1
dir12/dir22/dir32......./dirn2
dir13/dir23/dir33......./dirn3
深さが異なっています。長さ> 0のファイルx.txtを持つディレクトリが存在するすべてのパスを見つけることは可能ですか? bashスクリプトを使用する必要がありますか?おかげさまで
私のようなディレクトリツリーがあります。入れ子になったディレクトリを見つけるには?
dir11/dir21/dir31......./dirn1
dir12/dir22/dir32......./dirn2
dir13/dir23/dir33......./dirn3
深さが異なっています。長さ> 0のファイルx.txtを持つディレクトリが存在するすべてのパスを見つけることは可能ですか? bashスクリプトを使用する必要がありますか?おかげさまで
[はい...
for dir in $(find /the/root/dir -type d); do
if [ ! -f "$dir/x.txt" ]; then
continue
fi
size=$(stat -c %s "$dir/x.txt")
if [ "$size" != "0" ]; then
echo $dir
fi
done
私はGNU findは、それ自体で、すべての条件に一致することができると信じて、ということはかなり必要があります。
$ find /top/dir -not -empty -type f -name x.txt -printf '%h\n'
上記は、再帰的に(空でないため/top/dir
を検索-not -empty
)、標準ファイル(-type f
)、x.txt
という名前のファイルを作成し、これらのファイルに続くディレクトリ(-printf '%h\n'
)を出力します。
find . -type f -name *x.txt -size +1
はおそらくとあなたが使用できます:
find /top/dir -type f -name x.txt -size +1b -printf '%h\n'
'ものprintf \ N '! – Benoit
@Benoit、あなたは絶対に正しいです。応答は修正されました。ヘッドアップのおかげで修正されました:) –
Hmmwait、私のためにOPはそのようなファイルがある_directories_を探しています。これはディレクトリではなく – fge