在文件路径

时间:2016-09-23 23:50:27

标签: file-rename

我想重命名我是变量的文件,但我遇到了问题。

$ 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>

2 个答案:

答案 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

不是很优雅,但它完全符合我的要求。如果有人有更好的解决方案,请分享!