私は多くのファイルをダウンロードしてコンパイルするプロジェクトを持っています。このファイルについて私ができる仮定は次のとおりです。
- 最上位ディレクトリは1つだけです。
- フォルダ名がtar.xz/gzファイル名と必ずしも一致する必要はありません。つまり、Something-1.3.5a.tar.gzをSomething-1.3.5というフォルダに抽出できます。
入力量を減らすために、以下を実行する小さなスクリプトを作成しました。
- tar.xz/gz ファイルの抽出
- cdでディレクトリに入ります
私の現在のハッキングは、次のことを行うことです。
test1=$(tar -axvf something-1.3.5a.tar.gz)
cd $(echo $test1 | cut -f1 -d" ")
基本的にこれが行うことは、抽出の出力をキャプチャし、最初の行(トップレベルディレクトリ)をインポートしてからそこにCDを挿入することです。
だから私の質問は、これを行うよりクリーンでより良い方法がありますか?
ベストアンサー1
#!/bin/sh
Dir_name=`tar -tzf something-1.3.5a.tar.gz | head -1 | cut -f1 -d"/"`
echo $Dir_name
tar options details,
-t, --list
-z, --gzip, --ungzip filter the archive through gzip
-f, --force-local archive file is local even if has a colon
ここでは、tarのファイルのリストを取得し、head -1
cmdを使用して最初の行を取得し、cmdを切り取り、最初のフィールドを抽出します。