我的Linux机器上的文件夹中有很多tar.gz文件,还有带有tar.gz文件名和匹配示例名称的文本文件。
Current_directory
|_______TDF.tar.gz
|_______DFG.tar.gz
|_______GHY.tar.gz
当前目录中的names.txt文件如下所示:
Tar.gz_filenames Sample_Names
DFG.tar.gz Sample2
TDF.tar.gz Sample1
GHY.tar.gz Sample3
因此,基于它们的匹配,我希望在Current_directory中提供以下输出。
Output:
Sample1.tar.gz
Sample2.tar.gz
Sample3.tar.gz
我尝试按照以下步骤操作,但没有成功:
for j in .tar.gz ; do
sed "s/\(\w\+\)\s\+\(\w\+\)/mv '*_\1$j' '*_\2$j'/e" names.txt
done
我的问题的小更新:当我使用此命令时,cat -e names.txt
我看到如下所示:
Tar.gz_filenames Sample_Names^M$
DFG.tar.gz Sample2^M$
TDF.tar.gz Sample1^M$
GHY.tar.gz Sample3
假设文件名中没有空格的另一种方法:
$ xargs -n2 echo mv -i <<<"$(sed '1d; s/$/.tar.gz/' names.txt)"
mv -i TDF.tar.gz Sample1.tar.gz
mv -i DFG.tar.gz Sample2.tar.gz
mv -i GHY.tar.gz Sample3.tar.gz
在中sed '1d; s/$/.tar.gz/'
,1d
正在删除输入fileName的第一行,names.txt
然后在每一行的末尾s/$/.tar.gz/
添加.tar.gz
(对行末的$
ponit)。
在其中,xargs -n2
我们正在阅读用空格/或Tab分隔的两组字符串。
笔记:
根据cat -e names.txt
该文件的输出不是Unix类型的行尾格式,将其转换为Unix类型,dos2unix fileName
然后应用上述命令进行重命名。
除去echo
干运行。
链接到“什么是”^M
以及如何摆脱它?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句