Tar:ファイルのみを抽出します(サブディレクトリは除く)。

Tar:ファイルのみを抽出します(サブディレクトリは除く)。

どのように抽出しますかただtar アーカイブ内のディレクトリにファイルがありますか?特定のファイルではなく、ディレクトリ内のすべてのファイルを抽出する必要があります。たとえば、次の構造のtarアーカイブがあります。

wordpress
 --wp-admin
 --wp-content
 --wp-includes
 --index.php
 --license.txt
 --readme.html

サブディレクトリではなく、WordPressディレクトリ内から3つ以上のファイルのみを抽出したいと思います。

このサイトで見つけることができる他の解決策は、特定のファイル抽出に関するものです。私の質問は抽出に関するものです。みんな文書。

ベストアンサー1

ディレクトリ名とファイル名の形式を想定できない場合は、同じレベルで(空の)ディレクトリを抽出せずに特定のレベルでファイルを抽出する方法が見つかりません。 (ファイル名にドットが含まれているがディレクトリにドットがない場合もう一つの答え十分でしょう。 )

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

後者に注意してくださいrmdirtar結果のディレクトリが空であっても、ディレクトリの作成をスキップするように指示できないため、後で削除できます。

wordpress実際にディレクトリが抽出に含まれたくない場合は、

tar xf /tmp/370358.tar --strip-components 1 --wildcards --exclude '*/*/*' && rmdir * 2>/dev/null

ls -R
.:
index.php  license.txt  readme.html

おすすめ記事