したがって、次の例のような番号のファイルのリストがあります。
/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")"