フォルダからいくつかのファイルを抽出し、そのファイルのリストを作成します。

フォルダからいくつかのファイルを抽出し、そのファイルのリストを作成します。

現在、約1000個のファイルを含むフォルダで作業しており、そのフォルダからいくつかのファイル名を抽出し、そのファイル名を含む別のファイル(設定ファイル)を作成する必要があります。

既定では、このフォルダのファイル名の形式は次のとおりです。

1_Apple_A_someword.txt 
1_Apple_B_someword.txt 
2_Apple_A_someword.txt 
2_Apple_B_someword.txt 
3_Apple_A_someword.txt 
3_Apple_B_someword.txt

など

1000_Apple_A_someword.txt
1000_Apple_B_someword.txt

「Apple_A」を含むすべてのファイルを抽出したいです。また、各「Apple_A」ファイルに対して、値がファイル名である「ラベル」(Unix変数)を持つ別のファイルを作成したいと思います。また、「ラベル」はファイル名の一部です(「Apple」という単語まで)。

1_Apple=1_Apple_A_someword.txt
2_Apple=2_Apple_A_someword.txt
3_Apple=3_Apple_A_someword.txt

ちょっと待って...まで

1000_Apple=1000_Apple_A_someword.txt

これを行う1行のUnixコマンドを教えてもらえますか?たぶん「awk」と「sed」を使うこともできます。

答え1

この作業は2段階で行います。

all_apple_a.datファイル名に「Apple_A」を含むすべてのファイルを一覧表示するファイルを作成します。

ls | grep Apple_A > all_apple_a.dat

labelled_apples.datファイル名で「tag」というファイルを作成します。

perl -pe 's/(\d+_Apple)(.*)/\1=\1\2/' all_apple_a.dat > labelled_apples.dat

関連情報