次のコマンドがあります。
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'