[英]Rename directory in Bash script when the file with this name already exist
創建示例:
cd ~
mkdir .example.d
touch .example
現在我們有一個目錄和一個文件。
下一個:
#!/bin/bash
mv .example.d .example
mv:無法用目錄“ .example.d”覆蓋非目錄“ .example”
如何通過bash腳本解決問題? 我需要'.example'目錄和'.example'文件。
不幸的是,不可能在同一個包含文件夾中包含名稱相同的文件和文件夾。
這是因為在Linux和Unix中,與我們對文件和文件夾的看法不同,文件和文件夾被視為文件。
根據Linux / Unix文件命名約定,您不能在同一目錄中擁有兩個名稱相同的文件。 http://www.cyberciti.biz/faq/linuxunix-rules-for-naming-file-and-directory-names/
您不能具有相同名稱的文件和目錄。
(以相同的方式,您不能擁有兩個文件或兩個具有相同名稱的目錄。)
您是否要使用目錄破壞文件?
如果不幸的是, mv
將不允許您這樣做。 那是因為它不能將文件索引節點更改為目錄索引節點。
如果要在腳本中執行此操作,則必須先檢查文件,然后刪除該文件(如果存在)。
與:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.