Directory
通過變數自動保存 tar 內部的目錄名稱
我下載了一個只包含一個目錄的壓縮包;這個目錄有一個很長的名字。
一旦我從壓縮包中提取它,我希望更改該目錄的名稱,但我更喜歡另一種方式而不是
mkdir
使用strip-components 1
and-C
。我考慮
mv
過,但我更喜歡提前自動將目錄名稱保存在變數中;我認為命令替換可能有助於以目錄名稱的形式保存輸出,但我看不出它如何僅對 tarball 中的名稱(或任何特定目錄)有選擇性。
命令替換怎麼可能,或者如果沒有,有什麼替代方法是可能的?
以下假設您正在使用目前目錄中的存檔。
tar -x -f "$archivedir.tar" mv "$archivedir" new-name
這假定變數
$archivedir
包含tar
不帶後綴的存檔名稱,.tar
並且這也是提取存檔時將創建的目錄的名稱。它提取存檔並重命名創建的目錄。
如果您有
tar
存檔$tararchive
的文件名並且文件名後綴是.tar
(包含在 的值中$tararchive
):tar -x -f "$tararchive" mv "$(basename "$tararchive" .tar)" new-name
該
"$(basename "$tararchive" .tar)"
位可以替換為"${tararchive%.tar}"
.
我不確定我是否正確理解了你的問題,但我認為你正在尋找這樣的東西:
$ dir="$(tar tf archive.tar | cut -d / -f1 | uniq)" $ echo "$dir" tar-very-long-nime-very-very-long