簡體   English   中英

當具有該名稱的文件已經存在時,在Bash腳本中重命名目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM