Directory

通過變數自動保存 tar 內部的目錄名稱

  • November 7, 2019

我下載了一個只包含一個目錄的壓縮包;這個目錄有一個很長的名字。

一旦我從壓縮包中提取它,我希望更改該目錄的名稱,但我更喜歡另一種方式而不是mkdir使用strip-components 1and -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

引用自:https://unix.stackexchange.com/questions/536207