Tar
Tar:僅提取文件(不是子目錄)
如何僅從tar 存檔中的目錄中提取文件?我需要提取目錄中的所有文件,而不是特定文件。例如,使用此結構的 tar 存檔:
wordpress --wp-admin --wp-content --wp-includes --index.php --license.txt --readme.html
我只想提取 wordpress 目錄中的 3 個(或更多)文件,而不是子目錄。
請注意,我可以在此站點上找到的其他解決方案是關於提取特定文件的。我的問題是關於提取所有文件。
除非我可以對目錄名和文件名的格式做出假設,否則我找不到任何方法來提取特定級別的文件,而無需同時提取同一級別的(空)目錄。(如果文件名包含點但目錄不包含,那麼另一個答案就足夠了。)
考慮
370358.tar
這個內容wordpress/ wordpress/index.php wordpress/license.txt wordpress/readme.html wordpress/wp-admin/ wordpress/wp-admin/admin.php wordpress/wp-content/ wordpress/wp-content/2021/ wordpress/wp-content/2021/01/ wordpress/wp-content/2021/01/19/ wordpress/wp-content/2021/01/19/today.txt wordpress/wp-content/content.txt wordpress/wp-content/here.txt wordpress/wp-content/some.txt wordpress/wp-includes/
wordpress/*
您可以像這樣提取匹配的文件tar xf /tmp/370358.tar --wildcards --exclude '*/*/*' && rmdir */* 2>/dev/null ls -R wordpress wordpress: index.php license.txt readme.html
注意尾隨
rmdir
.tar
即使生成的目錄是空的,我們也不能告訴跳過目錄創建,所以我們只是在之後刪除它們。如果您實際上不希望
wordpress
目錄包含在提取中,tar xf /tmp/370358.tar --strip-components 1 --wildcards --exclude '*/*/*' && rmdir * 2>/dev/null ls -R .: index.php license.txt readme.html