
名前がtomcat_で始まるサーバーに複数のディレクトリがあります。このディレクトリに preparetest.class などのファイルがあります。
これで、特定のファイルの変更日時を次の形式でインポートする必要があります。
フォルダ名変更日
答え1
cd
ディレクトリがあるディレクトリに移動しtomcat_*
(すべて同じディレクトリにある必要はありません)、次のコマンドを実行します。
find . -path "./*tomcat_*managetest.class"
たとえば、次のようになります。
./b/tomcat_c/managetest.class
./tomcat_a/managetest.class
./tomcat_a/b/managetest.class
しかし./b/c/managetest.class
、。managetext.class
今すぐ入る必要がある場合は教えてくださいtomcat_*
。
変更された日付を印刷するための完全なコマンドは次のとおりです。
find . -path "./*tomcat_*managetest.class" -exec stat -c "%n %y" {} \;
awkを使用して、上記のコマンドの最後にこのような内容を作成して、より興味のあるフィールド(年や時間など)を選択できます。あるいは、gogoudが提案したように| awk '{print $1" "$2" "$3}'
execを使用する代わりに、コマンドを使用することもできます。find
printf
答え2
Ulrichが提案したように、次のことができますfind
。
find "/mydir" -type f -regex ".*/tomcat_.*/managetest.class" -printf "%h %T+\n"
修正する:
必要な形式を取得するには、awkを介して出力をパイプできます。
find "/mydir" -type f -path "*/tomcat_*/managetest.class" -printf "%h %T+\n" | awk -F"[ /.]" '{print $(NF-4),$(NF-1)}'
awkステートメントは、出力を「[space] /」の任意の文字のフィールドに分割します。 - 次に、より高いレベルのディレクトリ、ファイル名、または瞬間が表示されないようにするために必要なフィールドである4番目と最後のフィールドを印刷します。 (私もfind
sを-path
代わりに使うことに切り替えましたが、-regex
どちらも同じ目標を達成します。)