根据给定顺序对文件夹中的项目进行排序

根据给定顺序对文件夹中的项目进行排序

假设我有一个文件 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

相关内容