このコマンドを使用して、現在のディレクトリで .mp3 を含むすべてのディレクトリを検索し、ディレクトリ名のみを除外しました。
find . -iname "*.mp3" | sed -e 's!/[^/]*$!!' -e 's!^\./!!' | sort -u
私は今、反対のことを望んでいますが、少し難しいと感じました. 「!」を追加することはできません。.mp3 を含まないディレクトリが見つからない場合は、印刷時に .mp3 のみが除外されるため、find コマンドに追加します。
これをググって、stackoverflow と unix.stackexchange.com を検索しました。これまでにこのスクリプトを試してみましたが、次のエラーが返されます。
#!/bin/bash
find . -type d | while read dir
do
if [[! -f $dir/*.mp3 ]]
then
echo $dir
fi
done
/home/user/bin/try.sh: 5行目: [[!: コマンドが見つかりません
#!/bin/bash
find . -type d | while read dir
do
if [! -f $dir/*.mp3 ]
then
echo $dir
fi
done
/home/user/bin/try.sh: 5行目: [!: コマンドが見つかりません
#!/bin/bash
find . -type d | while read dir
do
if [[! -f "$dir/*.mp3" ]]
then
echo $dir
fi
done
/home/user/bin/try.sh: 5行目: [!: コマンドが見つかりません
テストコマンドの複数の引数に関係していると思います。
変数が変更されるすべてのディレクトリをテストしているので、ファイル名にワイルドカードを使用します。
どんな助けでも大歓迎です。ありがとうございました。