文件名问题(?)

Nik*_*nx3 4 filenames mv

我已经用youtube-dl下载了音频,然后我想用mv更改名称:

mv "Powerwolf  - Resurrection By Erection-Hiu1hPdJk-Y.mp3" "Powerwolf - Resurrection by Errection.mp3
>"
Run Code Online (Sandbox Code Playgroud)

但是,当我想对重命名的文件执行某些操作时,bash 会打印:

root@bananapi:~/Music# mv "Powerwolf - Resurrection by Errection.mp3 " All
mv: cannot stat 'Powerwolf - Resurrection by Errection.mp3 ': No such file or directory
Run Code Online (Sandbox Code Playgroud)

当我输入ls -l 时,bash 打印:

root@bananapi:/home/music/Music# root@bananapi:/home/music/Music# ls -l
total 3860
drwxr-xr-x 2 music music    4096 Apr 19 11:49 All
-rw-r--r-- 1 music music     360 Apr 19 12:34 download.py
drwxr-xr-x 2 music music    4096 Apr 19 11:48 Eleven
drwxr-xr-x 2 music music    4096 Apr 18 20:49 KlemenSlakonja
drwxr-xr-x 2 music music    4096 Apr 19 11:49 LittleBig
drwxr-xr-x 2 music music    4096 Apr 18 20:28 Powerwolf
-rw-r--r-- 1 root  root  3924591 Oct 24 15:03 Powerwolf - Resurrection by Errection.mp3 ?
Run Code Online (Sandbox Code Playgroud)

现在,我想删除这个文件,但我不能。

Kus*_*nda 6

您最初mv将文件重命名为末尾包含换行符的名称。您忘记关闭新名称的带引号的字符串并按下了Enter。按下 Enter(插入换行符)后,您关闭了双引号。这在文件名中插入了一个换行符。

要重命名文件,请使用

mv $'Powerwolf - Resurrection by Errection.mp3 \n' 'Powerwolf - Resurrection by Errection.mp3'
Run Code Online (Sandbox Code Playgroud)

注意前面的空格\n。根据ls输出,它看起来应该在那里。

您还可以使用 a*将名称的结尾与换行符匹配:

mv "Powerwolf - Resurrection by Errection.mp3"* "Powerwolf - Resurrection by Errection.mp3"
Run Code Online (Sandbox Code Playgroud)