次の名前のファイルがあります:f{number}.ext
別のディレクトリには、次のディレクトリのリストが存在します:
- 001
- 002
- 003
- ....
これらの各ディレクトリには、次のファイルのリストが含まれています。
- f001.拡張子
- f002.拡張子
- ...
ファイル名は各ディレクトリで繰り返されていますが、これらは異なるファイルです。参照f{number}.ext
先のディレクトリのリストでこのファイル ( ) を見つけて、ルート ディレクトリ名 (例) を取得する003
か、ファイルが見つからない場合はメッセージを出力する必要があります。
fdupes
この操作に使用できますか?
答え1
次の bash スクリプトを使用できます:
#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
myFile=`ls */f${iNumb}.ext 2>&1`
if [ "${myFile:0:2}" == "ls" ]
then
echo "File f${iNumb}.ext: File not found"
else
echo "File f${iNumb}.ext:" `dirname ${myFile}`
fi
done
- は
2>&1
、ファイルが見つからない場合の ls のエラー メッセージを処理します (例ls: cannot access */f005.ext: No such file or directory
)。 if
文字列がmyFile
で始まるかどうかls
(その場合はエラー)、または で始まらないかどうか (その場合はファイルが見つかったかどうか)をテストします。dirname
ディレクトリを返します。basename
ファイル名を返します。