您好,我需要將檔案重命名為其修改日期的 unix 時間戳,并將其作為前綴附加。
換句話說,我需要一個腳本來批量重命名檔案,例如
ABC.jpg
和
XYZ.png
到
1649493072000 ABC.jpg
1649493072182 XYZ.png
我還喜歡在以這種方式修改的每個檔案前附加一個 u- 。
所以我喜歡轉
ABC.jpg
和
XYZ.png
進入
u-1649493072000 ABC.jpg
u-1649493072182 XYZ.png
PS:
對于所有模組,請注意我的問題與其他已經提出的問題不同,因為我詢問的是檔案的 UNIX 修改時間戳而不是 ISO 日期(如 2022-04-09)。
uj5u.com熱心網友回復:
find . -type f -exec \
sh -c '
for i do
d=$(dirname "$i")
[ "$d" = / ] && d=
n=${i##*/}
echo mv "$i" "$d/u-$(stat -c %Y "$i") $n"
done' _ {}
這在當前目錄 (
.) 中遞回操作。它僅針對常規檔案(而不是目錄等)。如果需要,修改-type f和其他標志。它只列印 mv 命令,因此您可以查看它們。洗掉
echo以真正運行。我們使用
find列出目標檔案及其-exec標志將此串列傳遞給 shell 回圈,我們可以在其中決議和修改檔案名,包括stat獲取修改時間。我不知道您的用例,但更好的解決方案可能是將輸出:保存
find . -type f -printf '%p u-%T@\n'在一個檔案中,以供以后參考(這會在同一行列印檔案路徑和修改時間)。另外,也許是快照(如果可能)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/457897.html
下一篇:如何使用find命令忽略檔案
