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

当具有此名称的文件已存在时,重命名Bash脚本中的目录,bash,shell,mv,Bash,Shell,Mv,创建示例: cd ~ mkdir .example.d touch .example 现在我们有一个目录和一个文件 下一步: mv:无法用目录覆盖非目录“.example” `.例如:d' 如何通过bash脚本解决这个问题? 我需要“.example”dir和“.example”文件。文件和目录不能同名 (同样,您不能有两个文件或两个同名目录。)很遗憾,在同一包含文件夹中不可能有一个文件和一个同名文件夹 这是因为在Linux和Unix中,文件和文件夹被视为 文件不同于我们对文件和文件夹的透视图

创建示例:

cd ~
mkdir .example.d
touch .example
现在我们有一个目录和一个文件

下一步:

mv:无法用目录覆盖非目录“.example” `.例如:d'

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

文件和目录不能同名


(同样,您不能有两个文件或两个同名目录。)

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

这是因为在Linux和Unix中,文件和文件夹被视为 文件不同于我们对文件和文件夹的透视图

根据Linux/Unix文件命名约定,同一目录中不能有两个同名文件

是否要删除包含目录的文件

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

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

或与:

if [ -e .example ] ; then
    # Will remove existing directories
    rm -r .example
fi
mv .example.d .example
或者特别注意现有的
是否存在。例如
是一个文件或目录:

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