我有一个包含在文件名中的文件名列表"文件.txt";它是这样的:
filename1 some_block_of_text
filename2 some_block_of_text
filename3 some_block_of_text
filename4 some_block_of_text
...
我想做的就是解析这个文件,并通过添加扩展名"来更改所有文件名;。ext";所以我的文件是这样的:
filename1.ext
filename2.ext
filename3.ext
filename4.ext
...
包含文件名的文件作为参数传递,因此命令应为:./my_script.sh file.txt
我是这方面的新手,我应该选择这样的东西吗:
#!usr/bin/bash
for filename in $1 :
rename -s /old_filename/new_file_name
提前感谢你们的帮助伙计们
使用显示的示例,尝试;请尝试以下代码。在此处使用awk
以.ext格式打印第一列。
cat script.bash
awk '{print $1".ext"}' "$1"
解释:只需打印每行的第一列,并向其中添加.ext
字符串。
由于通过构造可以保证文件名中没有空格或换行符,因此可以执行
cut -f 1 -d ' ' file.txt|xargs -L 1 -I {} -t mv -v {} {}.ext
cut
生成文件名列表,xargs -L 1
将它们逐一应用于mv
命令。
警告:我没有测试该命令,所以在实际运行该命令之前,请先准备mv
和echo
进行试运行。