我当前正在处理一个包含大约 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
你能告诉我一个执行此操作的单行 Unix 命令吗?也许使用“awk”和“sed”
答案1
我会分两步完成此操作。
创建一个名为all_apple_a.dat
列出文件名中包含“Apple_A”的所有文件的文件:
ls | grep Apple_A > all_apple_a.dat
创建一个名为labelled_apples.dat
“标签”您的文件名的文件:
perl -pe 's/(\d+_Apple)(.*)/\1=\1\2/' all_apple_a.dat > labelled_apples.dat