Tar
將 tar 存檔解壓縮到 git-bash 中的現有目錄
我在一個名為
my-D8
. 我想將它更新到 drupal 8.3.1,並且我已經下載了drupal-8.3.1.tar.gz
. 我的sites
目錄中都有:/d/sites $ ls drupal-8.3.1.tar.gz my-d8/
當我嘗試提取檔案時,它會將所有內容放在一個名為 的目錄中
drupal-8.3.1
,這是我所期望的。但是,我希望該目錄的所有文件和子目錄都覆蓋(並添加到)現有my-d8
目錄。我嘗試了該
mv
命令,但在我的 shell 中,它拒絕覆蓋現有的非空子目錄。$ mv drupal-8.3.1/* my-d8/ mv: cannot move 'drupal-8.3.1/core' to 'my-d8/core': Directory not empty mv: cannot move 'drupal-8.3.1/modules' to 'my-d8/modules': Directory not empty ...
Google搜尋,我找到了這個AskUbuntu 答案,但是當我嘗試它時,它並沒有完全達到目的:
$ tar -xvf drupal-8.3.1.tar.gz --directory=my-d8 --strip-components=1 drupal-8.3.1/.csslintrc drupal-8.3.1/.editorconfig drupal-8.3.1/.eslintignore ... ^C
它沒有覆蓋 repo 根目錄中的文件,而是簡單地將子目錄放在 repo 中:
$ ls my-d8/drupal-8.3.1/ autoload.php composer.json composer.lock core/ README.txt
編輯我嘗試了 dope-ghoti 的答案,經過仔細檢查,它沒有用:
$ ls drupal-8.3.1.tar.gz my-D8/ $ tar -zx -f drupal-8.3.1.tar.gz -C my-D8 $ ls my-D8/drupal-8.3.1/ autoload.php composer.json ... $ cd my-D8/ $ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) drupal-8.3.1/ nothing added to commit but untracked files present (use "git add" to track)
如何輕鬆地將存檔文件和目錄提取到我的儲存庫中各自的位置?
$ tar --version tar (GNU tar) 1.29
從手冊:
-C DIR change to directory DIR
這會改變
tar
程序的工作目錄。您還可以使用--strip
刪除drupal-8.3.1/
存檔中文件名的第一個組成部分(例如 )。這樣你就可以:tar --strip=1 -zx -f drupal-8.3.1.tar.gz -C my-d8
如果你
tar
沒有--strip
,它至少應該有--transform
:tar --transform 's_drupal-8.3.1/__' -zx -f drupal-8.3.1.tar.gz -C my-d8