Jac*_*eck 4 bash shell-script mv
我正在尝试编写一个 bash 脚本,该脚本将遍历目录\n并将文件重命名为“Chapter1.mp3”、“Chapter2.mp3”(文件名真的很疯狂,任何人都无法识别它们是什么)等,\n但是当我这样做时,出现以下错误:
\nmv: target \'Chapter##.mp3\' is not a directory\n
Run Code Online (Sandbox Code Playgroud)\n我记得,mv
命令允许您指定文件名和目录...为什么我会收到此错误?以下是我的代码:
cptr=0;\n\nfor i in ./myFolder/*; do\n cptr=$(($cptr+1)); # I can\'t remember, can I use cptr++?\n mv -v $i "Chapter$cptr.mp3";\ndone;\n
Run Code Online (Sandbox Code Playgroud)\n我尝试过删除文件扩展名,删除引号,甚至使用cp
代替,但我尝试过的任何方法都不起作用。\xc2\xa0\n为什么它要求目标只能是目录而不是文件名?
我正在使用带有适用于 Linux 的 Linux 子系统的 Ubuntu 20.04 LTS 终端;\n这有什么区别吗?
\nSco*_*ott 11
如果您的文件名中包含空格(或制表符或换行符),\n则需要用$i
引号引起来。\xc2\xa0\n如果,\xc2\xa0for\xc2\xa0例如,您的第 42 个文件名为foo\xc2\xa0bar
,则
mv -v $i "Chapter$cptr.mp3"\n
Run Code Online (Sandbox Code Playgroud)\n将被扩展为
\nmv -v ./myFolder/foo bar "Chapter42.mp3"\n
Run Code Online (Sandbox Code Playgroud)\n看起来您\xe2\x80\x99正在使用mv
三个名称参数运行。\xc2\xa0\nmv
仅当姓氏是\xc2\xa0目录(例如\xc2\xa0)时,使用三个或更多名称参数运行才有效mv\xc2\xa0*.mp3\xc2\xa0my_music
\ .\xc2\xa0\n因为您没有名为ChapterNN.mp3
,\n您会收到\xc2\xa0 报告的\xc2\xa0 错误。
也如此
\nmv -v "$i" "Chapter$cptr.mp3"\n
Run Code Online (Sandbox Code Playgroud)\n我说\xe2\x80\x9c如果你的文件名中有空格\xe2\x80\xa6,\n那么你需要加上$i
引号。\xe2\x80\x9d\xc2\xa0\nOf\xc2\xa0当然我\ xc2\xa0 意味着 \xe2\x80\x9c 你应该用$i
引号括起来,\n这样你的脚本就会工作\nif\xc2\ xa0you有任何带有空格的文件名\xe2\x80\xa6。\xe2\x80\x9d
归档时间: |
|
查看次数: |
21246 次 |
最近记录: |