Linux
如何忽略來自 mv 的錯誤:無法將 ‘XXXXXX 移動到自身的子目錄
在我們的 RHEL 7.6 伺服器上,我們創建以下文件夾
# mkdir -p /var/data/data-logs_temp
第二部分是將所有內容
/var/data/
移至以下位置/var/data/data-logs_temp
:# mv /var/data/* /var/data/data-logs_temp
但是我們從
mv
命令中得到的輸出是:mv: cannot move ‘/var/data/data-logs_temp’ to a sub directory of itself, ‘/var/data/data-logs_temp/data-logs_temp’
該
mv
命令對此是正確的。但; 是否可以告訴忽略這一點,因為我們需要命令中
mv
的退出程式碼?mv``0
或者可能有任何其他選項忽略移動本身的子目錄?
您可以使用 bash 的“擴展 glob”語法從要移動的文件列表中排除 data-logs_temp 子目錄:
shopt -s extglob mv /var/data/!(data-logs_temp) /var/data/data-logs_temp
有關擴展 glob 的更多資訊,請參閱Greg 的 wiki和這個問題。
在更簡單的 Unix/Linux 世界中,不呼叫擴展選項,可以:
(a)
mkdir data-logs_temp
在您擁有的任何目錄中,該目錄與 位於同一文件系統中/var/data
,並且可由您寫入,而不是位於/var/data
(/var
如果您具有寫入權限,則可以接受) 的任何子樹中。(b)
cd /var/data
和mv * /wherever/data-logs_temp
,避免使用完整目錄擴展所有全域名稱。這不會複製數據,只會創建連結;並且它不會嘗試將目錄複製到自身中。(c)
mv /wherever/data-logs_temp /var/data
。這只會移動一個連結,並保留樹結構。