現在、約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