2017-02-14 12 views
0

昨日、入力されたテキストを含むすべてのファイルを表示するスクリプトの使い方を学びました。Linux bash:特定のテキストを含むフォルダを見つける

echo "enter serial number" 
read number 

matchfiles=(`find /home/data_files -maxdepth 1 -name "*$number*" -type f -exec basename {} \;`) 

COUNTER=${#matchfiles[@]} 

echo serial number data folder found: 
until [ $COUNTER -lt 0 ]; do 
echo ${matchfiles[$COUNTER]} 
let COUNTER-=1 
done 

数12は、それが出力元のファイル名に含まれている番号12」

を持つすべてのファイルです入力された場合は、次の

enter serial number 
12 
file12.fee 
12file.foo 
file.12 

イム正確に行うための方法を探して同じものだがディレクトリがある

出力は

enter serial number 
12 
folder12 
12folder 

後でそれらのデータを操作するために使用できるように、配列に含まれるフォルダ名が必要です。

+0

'-type d'は、検索をディレクトリ名に制限します。 – karakfa

+0

@karakfaもちろん...ハハ。ありがとうございました! –

答えて

1
find {path} -name "*$number*" -type d -exec readlink -f {} \; 

あなたのオプション{パス}が相対であれば、あなたはreadlink -fは、絶対パスに相対パスを変換することですたいです。 dirパスに再帰的な検索を制限したい場合は、-maxdepthを後ろに追加するとよいでしょう。

関連する問題