假设我有一个文件 a.txt,其中每行包含行号(从 1 开始),后跟一个空格,然后跟一个名称(文件夹中项目的名称,例如 something.mkv)。我想根据给定的顺序(即给定的行号)对该文件夹中的项目进行排序,即文件 a.txt 中给出的顺序。怎么做?
答案1
是否有其他方法可以通过在目录中的文件前面加上订单号和下划线(顺序在 .txt 文件中定义)来重命名这些文件(一次性重命名所有文件)。
cat order.txt | sed -r 's/ *([0-9]+)[ \t]+(.*)/mv \2 \1_\2/'
此行将内容逐行导入 sed,将订单号和文件名分隔开来,以创建重命名命令。
该命令至少需要一个空间或者标签行号和文件名之间的字符。如果文件中有不同的分隔符,请将它们添加到[
和之间]
。
该脚本的结果可以通过附加到 bash 脚本中,
> renameWithOrdernumber.sh
也可以直接执行,然后附加
| bash
答案2
a.txt 的示例:
1 d
2 a
3 c
4 b
然后我们可以用
$ awk '{printf "mv %s %s\n", $2, $1"_"$2}' a.txt
mv d 1_d
mv a 2_a
mv c 3_c
mv b 4_b
如果我们喜欢结果,则在 bash 中执行它
$ awk '{printf "mv %s %s\n", $2, $1"_"$2}' a.txt | bash