Bash 脚本用于编辑文件名并移动文件。

Bash 脚本用于编辑文件名并移动文件。

我有一些音乐,它们都已命名1 - (song author) - (song name).flac,我想更改文件名,然后(song author) - (song name).flac将其移动到目录中。以下是我目前所拥有的:

while IFS='' read -r line || [[ -n "$line" ]]; do
 cp $line /home/user/Desktop/Music/$(cut -c3- "$line");
done < filelist.txt

filelist.txt 包含我想要重命名和移动的文件列表。

它不起作用,但在某种程度上我认为很有趣。我得到了错误,在检查剪切后bash: /bin/cp: Argument list too long的内容后,它看起来就像随机字符/字符代码。有人能告诉我我做错了什么吗?line

答案1

cut使用文件或标准输入,开关 -c 用于字符,而您很可能想要使用字段,并使用空格分隔符。此外,您必须将 cp 的第二个参数括在引号中。并且您需要指定 -c5- 以删除:

while read -r line || [[ -n "$line" ]]; do
  cp $line "/home/user/Desktop/Music/$(echo "$line" | cut -d ' ' -f3-)"
done < filelist.txt

相关内容