AWKを使用して常に特定の桁数で出力を印刷する方法

AWKを使用して常に特定の桁数で出力を印刷する方法

次のコマンドがあります。

find . -mtime -5 -type f -exec ls -ltr {} \; | awk '{print "cp -p "$9" "$7}'

出力は次のとおりです。

cp -p ./18587_96xxdata.txt 10
cp -p ./16947_96xxdata.txt 8
cp -p ./32721_96xxdata.txt 9
cp -p ./32343_96xxdata.txt 9
cp -p ./32984_96xxdata.txt 10

しかし、出力の最後の部分が常に次のように2桁になりたいと思います。

cp -p ./18587_96xxdata.txt 10
cp -p ./16947_96xxdata.txt 08
cp -p ./32721_96xxdata.txt 09
cp -p ./32343_96xxdata.txt 09
cp -p ./32984_96xxdata.txt 10

いろいろなバリエーションを試してみましたが、%02d欲しいものが得られませんでした。

私が試したことは次のとおりです。

find . -mtime -5 -type f -exec ls -ltr {} \; | awk '{print "cp -p " $9 " "("%02d", $7)}' 

使用する必要がありますかprintf?では、どのように使用しますか?

ありがとうございます!

ベストアンサー1

バラよりhttps://mywiki.wooledge.org/ParsingLsそしてhttps://mywiki.wooledge.org/Quotes次に、次のようにします。

$ find . -mtime -5 -type f -printf "cp -p '%p' '%Ad'\n"
cp -p './bbbb.csv' '09'
cp -p './cccc.csv' '10'
cp -p './out1.txt' '09'
cp -p './out2.txt' '05'

おすすめ記事