从文件夹中提取一些文件并创建这些文件的列表

从文件夹中提取一些文件并创建这些文件的列表

我当前正在处理一个包含大约 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

相关内容