Shell-Script

如何通過 mv 管道輸出 tar 的輸出?

  • December 16, 2015

我之前的一個問題是如何通過 tar 管道下載的文件,現在我想知道如何通過 mv 管道 tar 的輸出。看到我現在有這個命令:

wget -c https://github.com/JeffHoogland/moksha/archive/0.1.0.tar.gz | tar -xz

這將創建一個名為 的目錄moksha-0.1.0,但我想知道如何將這個輸出目錄重命名為,可能通過此命令末尾的moksha管道 ( )。|儘管如果您知道如何在沒有管道的情況下執行此操作,但仍與 wget 和 tar 使用同一行程式碼,我也很樂意接受。

需要明確的是,我知道:

wget -c https://github.com/JeffHoogland/moksha/archive/0.1.0.tar.gz | tar -xz -C moksha

將創建一個輸出目錄moksha,但在此輸出目錄中會有該moksha-0.1.0目錄,我想將此moksha-0.1.0目錄重命名為moksha,而不是放在moksha-0.1.0一個名為moksha.

像這樣?

[root@b se]# wget -cqO - https://github.com/JeffHoogland/moksha/archive/0.1.0.tar.gz | tar -xz --transform=s/moksha-0.1.0/moksha/
[root@b se]# ls
moksha
[root@b se]# ls moksha
ABOUT-NLS       config.guess          debian                 Makefile.am
aclocal.m4      config.guess.dh-orig  depcomp                Makefile.in
AUTHORS         config.h.in           doc                    missing
autogen.sh      config.rpath          enlightenment.pc.in    netwm.txt
autom4te.cache  config.sub            enlightenment.spec.in  NEWS
BACKPORTS       config.sub.dh-orig    INSTALL                po
BUGS            configure             install-sh             README
ChangeLog       configure.ac          intl                   src
compile         COPYING               ltmain.sh              xdebug.sh
config          data                  m4                     x-ui.sh

tar手冊頁:

--transform= *EXPRESSION* , --xform= *EXPRESSION*
使用 sed replace *EXPRESSION*轉換文件名。

因此sed,這可能需要它才能工作。雖然如果你有wget,你可能也有sed

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