1

ファイルをアップロードするフォルダーがあり、さまざまな種類 (pdf、jpg、wmv など) の 1,000 ~ 20,000 個のファイルがあり、ファイル名と長さが異なり、名前にスペースが含まれているなどがあります。

定期的に名前を変更するスクリプトを作成しようとしていますが、「古い日付が最初」で並べ替えて、新しい名前は YYYT000001.xxxx ... YYYY036242.xxxx の形式になります (YYYY は固定テキスト「Jan」または「Dec」(スクリプトに手動で入力します)、xxxx は元のファイル拡張子です)。

入力は最も古い日付でソートされるため、使用しようとしましたが、などfor i in $(ls -tr)を使用してファイル名を置き換えようとしました。basename $i

私はネットを検索しましたが、私の分厚い頭では動作するスクリプトを思いつくことができませんでした。

4

1 に答える 1

1

この質問このブログ投稿で彼らが言っていることを使用すると、次のようにファイルを移動するだけです。

#!/bin/bash
prefix="YYY"
i=0
for file in $(ls -tr)
do
    filename=$(basename "$file")
    extension="${filename##*.}"
    paddedIndex=$(printf "%06d" $i)
    mv $file ${prefix}${paddedIndex}.${extension}
    i=$(($i + 1))
done
于 2012-11-16T06:05:17.960 に答える