最大数値ファイル名にプレフィックスを追加する

最大数値ファイル名にプレフィックスを追加する

したがって、次の例のような番号のファイルのリストがあります。

/list/CAP_0045.dat
/list/CAP_0044.dat
/list/CAP_0046.dat

プレフィックスを追加するために、最も高い番号のファイル名を変更したいと思います。どうすればいいですか?

ベストアンサー1

これには、コマンド置換を使用できます(読み取りおよび参照man sh)。

ls /list | tail -n 1正しいファイルが印刷されたら、次のことができます。

file=$(ls /list | tail -n 1)
mv "/list/$file" "/list/PREFIX$file"

編集:@Wildcardが指摘したように、ファイル名に改行文字が含まれていると失敗する可能性があります。

ファイル名に改行文字を使用するソリューションでも、以下を使用する必要がありますfind -print0。 (すべてのバージョンが/オプションを{sort,head,tail} -zサポートしているわけではありませんが、GNUはそれをサポートしています。)-z--zero-terminated

file=$(find /list -print0 | sort -z | tail -n 1 -z)
mv "$file" "$(dirname "$file")/PREFIX$(basename "$file")"

おすすめ記事