フォルダには/usr/hdp/2.6.4.0-91/tez_hive2/lib/
次の.jarファイルがあります。
$ ls /usr/hdp/2.6.4.0-91/tez_hive2/lib/ | grep ".jar"
async-http-client-1.8.16.jar
azure-data-lake-store-sdk-2.1.4.jar
commons-cli-1.2.jar
commons-codec-1.4.jar
commons-collections-3.2.2.jar
commons-collections4-4.1.jar
commons-io-2.4.jar
commons-lang-2.6.jar
commons-math3-3.1.1.jar
guava-11.0.2.jar
hadoop-aws-2.7.3.2.6.4.0-91.jar
hadoop-azure-2.7.3.2.6.4.0-91.jar
hadoop-azure-datalake-2.7.3.2.6.4.0-91.jar
hadoop-mapreduce-client-common-2.7.3.2.6.4.0-91.jar
hadoop-mapreduce-client-core-2.7.3.2.6.4.0-91.jar
hadoop-yarn-server-timeline-pluginstorage-2.7.3.2.6.4.0-91.jar
jersey-client-1.9.jar
jersey-json-1.9.jar
jettison-1.3.4.jar
jetty-6.1.26.hwx.jar
jetty-util-6.1.26.hwx.jar
jsr305-3.0.0.jar
metrics-core-3.1.0.jar
protobuf-java-2.5.0.jar
RoaringBitmap-0.4.9.jar
servlet-api-2.5.jar
slf4j-api-1.7.10.jar
.jarファイル内のすべての文字数を計算したいと思います。トイレ、.jarファイルの名前が変更されたことを確認する
したがって、次のコマンドを実行して、すべての.jarファイル内のすべての文字数を計算します。
ls /usr/hdp/2.6.4.0-91/tez_hive2/lib/ | grep ".jar" | sed s'/\// /g' | awk '{print $NF}' | wc | awk '{print $NF}'
758
したがって、この場合、すべての文字から758文字を取得します。.jars
しかし、コマンドはエレガントではありません
どうすれば演出をより良くできますか?
ベストアンサー1
ファイル名の文字数を数えることは、名前が変更されたファイル名を検出する安全な方法ではありません。
代わりに、単純な名前リストファイルを作成し、それを既存のリストと比較してください。を使用すると、diff
リスト内のどの行が変更されたかが正確に表示されます。
#!/bin/sh
LC_ALL=C
newlist=$HOME/filelist.new
oldlist=$HOME/filelist.old
echo /usr/hdp/2.6.4.0-91/tez_hive2/lib/*.jar >"$newlist"
if [ -f "$oldlist" ]; then
diff -u "$oldlist" "$newlist"
fi
mv "$newlist" "$oldlist"
明らかに、これを初めて実行するとfilelist.old
存在しないため、diff
実行されません。
出力ファイルに各ファイルのフルパスを保存します。ディレクトリパスが静的であるため、これは重要ではありません。
タイムスタンプなども比較するにはecho
に変更してください。より多くのメタデータを比較するには、それを次に変更します(ファイルの最後のアクセスタイムスタンプが変更されると差分出力が生成されます)。行ベースのdiffの代わりに単語ベースのdiffを取得するようにインストールおよび変更されました。ls -l
stat
wdiff
diff
wdiff
これはLC_ALL=C
、シェルグローブ拡張の一貫した順序を確保するためです。