Unix 提取文件列表并创建包含此列表的新文件

Unix 提取文件列表并创建包含此列表的新文件,unix,sed,awk,Unix,Sed,Awk,我是一名研究人员,在Unix命令方面的技能有限。我目前正在处理一个包含大约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

我是一名研究人员,在Unix命令方面的技能有限。我目前正在处理一个包含大约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
我只想提取出所有包含“苹果A”的文件。此外,我还想创建另一个文件,其中每个“Apple_A”文件都有“label”(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”试试

ls *Apple_A* | sed 's/\(\(.*Apple\).*\)$/\2=\1/'
试一试

awk版本,仅供参考:

ls -1 | awk -vFS='_' '/Apple_A/ {print $1"_"$2"="$0}'
awk版本,仅供参考:

ls -1 | awk -vFS='_' '/Apple_A/ {print $1"_"$2"="$0}'
这可能适用于您(GNU-sed):

这可能适用于您(GNU-sed):


那不是创建了
1\u Apple=\u someword.txt
而不是
1\u Apple=1\u Apple\u someword.txt
?那不是创建了
1\u Apple=\u someword.txt而不是
1\u Apple=1\u someword.txt
ls -1|perl -F_ -ane 'if($_=~m/Apple_A/){print $F[0]."_".$F[1]."=".$_}'