当具有此名称的文件已存在时,重命名Bash脚本中的目录

时间:2015-02-02 10:24:35

标签: bash shell mv

创建示例:

cd ~
mkdir .example.d
touch .example

现在我们有一个目录和一个文件。

下一步:

#!/bin/bash
mv .example.d .example
  

mv:无法用目录覆盖非目录'.example'   `.example.d'

如何通过bash脚本解决问题? 我需要'.example'dir和'.example'文件。

3 个答案:

答案 0 :(得分:1)

很遗憾,不可能在同一个包含文件夹中包含同名文件和文件夹。

  

这是因为在Linux和Unix文件和文件夹中被视为   文件和文件夹的视角不同。

根据Linux / Unix filenaming约定,您不能在同一目录中拥有两个同名文件。 http://www.cyberciti.biz/faq/linuxunix-rules-for-naming-file-and-directory-names/

答案 1 :(得分:0)

您不能拥有同名文件和目录。

(与你不能拥有两个文件或两个同名目录的方式相同。)

答案 2 :(得分:0)

您想要clobber带有目录的文件吗?

如果您不幸,mv将不允许您这样做。这是因为它无法将文件inode更改为目录inode。

如果要在脚本中执行此操作,则必须先检查文件,如果存在则将其删除。

使用:

if [ -e .example ] ; then
    # Will remove existing directories
    rm -r .example
fi
mv .example.d .example

或者特别注意天气现有.example是一个文件或目录:

if [ -e .example -a ! -d .example ] ; then
    # Will not remove existing directories
    rm .example
fi
mv .example.d .example