我正在寻找Bash中重命名文件前缀的方法。 这些文件都在一个文件夹中。不会有其他文件。
00 - Artist - Title.mp3
01 - Artist - Title.mp3
......等等
到
01 - Artist - Title.mp3
02 - Artist - Title.mp3
......等等
前缀也可以只是单个(0,1,2,...),双(00,01,02,...),三,......前缀。
答案 0 :(得分:1)
Perl解决方案:
perl -we 'for (@ARGV) {
my ($n, $r) = /^([0-9]+)(.*)/;
rename $_, sprintf("%0" . length($n) . "d", 1 + $n) . $r;
}' *.mp3
正则表达式匹配将数字提取为$ n,其余为$ r。 $ n + 1然后由sprintf格式化为零填充,长度与原始数字相同。
请注意,它会更改9,99等数字的长度
答案 1 :(得分:0)
这是一项有风险的业务,但它似乎是一个似乎有用的解决方案:
sort -rn
mv -i
所以如果有相同艺术家和标题的相邻编号文件,它就不会尝试覆盖任何内容(这可能会发生,但如果我带你的话字面意思)。
$f
所以如果有任何案件可以提出来,它会覆盖任何事情。
如果您想要更清晰地将$number
分解为$rest
和BEGIN TRANSACTION;
TRUNCATE foo;
INSERT INTO foo ...;
COMMIT;
,请成为我的客人。