Ubuntu 16.04 LTS下用mv批量重命名时提示"[Filename] is not a directory"的原因
嘿,我来帮你捋捋这个错误的原因——在Ubuntu 16.04下批量重命名44个JPEG文件时碰到[Filename] is not a directory,大概率是这几个场景导致的:
误将目标路径/命名写成了已存在的普通文件
比如你想把所有图片移到某个位置并重命名,但你指定的目标其实是一个已经存在的文件(不是目录)。举个例子,如果你用了类似mv *.jpg my_photos的命令,而my_photos是一个已经存在的JPEG文件,系统就会报错——它没法把一堆文件“放进”一个普通文件里,自然会提示这个文件不是目录。重命名命令语法错误,把文件当成目录操作
系统自带的rename工具分Perl版和C版,语法差异很大,如果参数写错就会触发错误。比如你用Perl版rename时,错误地写成了rename old_prefix.jpg new_prefix.jpg *.jpg(这是C版的语法),系统会误以为你要把old_prefix.jpg移动到new_prefix.jpg里,但后者是个文件不是目录,就会报错。正确的Perl版批量替换应该是rename 's/原命名模式/目标命名模式/' *.jpeg。目标目录不存在,且命令逻辑要求必须是目录
有些批量操作命令默认目标是目录,如果你没提前创建目录就直接用命令,比如mv *.jpg new_folder/,但new_folder还没创建,系统会把new_folder当成一个普通文件名。当它尝试移动多个文件到这个“文件”里时,就会提示错误——因为单个mv命令移动多个文件时,最后一个参数必须是已存在的目录。
内容的提问来源于stack exchange,提问作者Elen Sila

