どのように抽出しますかただ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
後者に注意してください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