当具有此名称的文件已存在时,重命名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