我想重命名我是变量的文件,但我遇到了问题。
$ mkdir -p ~/foo/fooYes/
$ touch ~/foo/fooYes/fooYes.txt
$ OUTPUT=~foo/fooYes/fooYes.txt
$ echo $OUTPUT
~/foo/fooYes/fooYes.txt
$ rename 's/fooYes/fooNo/' "${OUTPUT}"
Can't rename '/Users/medialab/foo/fooYes/fooYes.txt' to '/Users/medialab/foo/fooNo/fooYes.txt': No such file or directory
两个问题:
为什么告诉我我不能重命名?
更重要的是,我想重命名fooYes.txt,而不是其父目录。
我使用上面的简化示例作为shell脚本的填充,其中“$ {OUTPUT}”是ffmpeg命令的结果。我想重命名“$ {OUTPUT}”的基本名称,但由于它与其父目录共享相同的名称(当然减去扩展名),因此它是父目录,而不是重命名的“$ {OUTPUT}”。 / p>
答案 0 :(得分:0)
您也可以使用它:
mv file1 file2
答案 1 :(得分:0)
#!/bin/bash
mkdir -p ~/foo/fooYes/
touch ~/foo/fooYes/fooYes.txt
OUTPUT=~/foo/fooYes/fooYes.txt
echo $OUTPUT
PARENTDIR=$(dirname $OUTPUT)
echo $PARENTDIR
cd $PARENTDIR
rename 's/fooYes/FooNo/' *.txt
cd ~
shift
不是很优雅,但它完全符合我的要求。如果有人有更好的解决方案,请分享!