如何使用Shell命令重命名文件夹中的文件?


8

我有一个文件some/long/path/to/file/myfiel.txt

我想将其重命名为some/long/path/to/file/myfile.txt

目前,我是通过mv some/long/path/to/file/myfiel.txt some/long/path/to/file/myfile.txt来完成此操作的,但是两次输入路径并不是十分有效(即使使用制表符补全)。

我怎样才能更快地做到这一点?(我想我可以编写一个仅更改文件名段的函数,但这是计划B)。

Answers:



5

以下是几个选项:

转到目录:

cd /home/long/path
mv file1 file2
cd -

使用目录堆栈更改目录:

pushd /some/long/path
mv file1 file2
popd

使用子shell转到目录:

( 
  cd /some/long/path
  mv file1 file2
)   # no need to change back

使用括号扩展:

mv /some/long/path/{file1,file2}

使用变量:

D=/some/long/path
mv "$D/file1" "$D/file2"

请注意,当路径中有空格时,最后一种方法会中断,请引用它。
slhck 2012年

@slhck 如果有空格,所有方法都会中断。
tylerl 2012年

1
不,如果您正确键入它们,它们将不会。只有扩展后的变量才会看起来像mv的多个参数
slhck 2012

@slhck,你去了。
tylerl 2012年

3

转到目录,移动文件,然后再返回到先前的目录;像这样:

cd some/long/path/to/file
mv myfiel.txt myfile.txt
cd -

1

当我使用subshel​​l方法时,我倾向于在一行上这样做

(cd /some/long/path ; mv myfiel myfile )
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.