0
我有一個文件的目錄,我需要使用時間戳重命名爲給定的字符串。For循環刪除文件而不是重命名
我使用下面的代碼:
for file in itvl_*
do
mv "$file" "Interval_$(stat -c %Y "$file" | date +%Y%m%d%H%M%S).Interval_001"
done
當我運行在符合給定的面具itvl_ *文件的目錄的腳本,它會刪除所有,但一個或兩個文件,然後成功地重命名組中的最後一個文件。
這裏可能會發生什麼?
你的「秒」不足以區分文件 - bash可能在同一秒內重命名所有文件的大部分,創建具有相同文件名的多個文件。 – Raizuri
'日期'不從標準輸入中讀取;您所做的只是將當前日期/時間用於新文件名。你希望'$(date +%Y%m%d%H%M%S --date $(stat -c%Y「$ file」))'將'stat'的結果用作'date的參數'。 – chepner