创建示例:
cd ~
mkdir .example.d
touch .example
现在我们有一个目录和一个文件。
下一步:
#!/bin/bash
mv .example.d .example
mv:无法用目录覆盖非目录'.example' `.example.d'
如何通过bash脚本解决问题? 我需要'.example'dir和'.example'文件。
答案 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