Directory
如何將目錄移動到同名目錄中?
我有一個
foo
包含幾個文件的目錄:. └── foo ├── a.txt └── b.txt
我想將它移動到同名的目錄中:
. └── foo └── foo ├── a.txt └── b.txt
我目前正在創建一個臨時目錄
bar
,然後移入foo
並重bar
命名bar
為foo
:mkdir bar mv foo bar mv bar foo
但這感覺有點麻煩,我必須為
bar
尚未使用的名稱選擇一個名稱。有沒有更優雅或更直接的方法來實現這一目標?如果這很重要,我在 macOS 上。
要在目前目錄中安全地創建一個臨時目錄,使用尚未使用的名稱,您可以
mktemp -d
像這樣使用:tmpdir=$(mktemp -d "$PWD"/tmp.XXXXXXXX) # using ./tmp.XXXXXXXX would work too
該
mktemp -d
命令將在給定路徑上創建一個目錄,X
路徑名末尾的 -es 將替換為隨機字母數字字元。它將返回創建的目錄的路徑名,我們將這個值儲存在tmpdir
. 1
tmpdir
然後可以在遵循您已經在執行的相同過程時使用此變數,並bar
替換為"$tmpdir"
:mv foo "$tmpdir" mv "$tmpdir" foo unset tmpdir
最後
unset tmpdir
的只是刪除變數。1 通常,人們應該能夠將
TMPDIR
環境變數設置為一個目錄路徑,在該目錄路徑中,人們想要使用mktemp
.並將在完全不同的位置創建目錄。但是,上述內容適用於 macOS。如果預設臨時目錄位於另一個分區並且該目錄包含大量數據(即它會很慢),則使用稍微更方便tmpdir=$(TMPDIR=$PWD mktemp -d)
甚至tmpdir=$(TMPDIR=. mktemp -d)
只會在 macOS 上成為問題。foo