Bashからファイル名の途中で先行ゼロを削除します。

Bashからファイル名の途中で先行ゼロを削除します。

これは私が経験している簡単な問題ですが、うまくsed対処できません。

結果splitとして、すべての1桁の数字ブロックには前に0が付きますBRNSPC_varID_chunk_07.txt。下線の後の先行ゼロを削除して、次のように見せたいと思いますBRNSPC_varID_chunk_7.txt。次のゼロに影響を与えたくありません(つまり、BRNSPC_varID_chunk_70.txt維持したいBRNSPC_varID_chunk_70.txt)。誰かがこれらすべてのファイルの名前をすばやく変更するのに役立ちますか? Rで処理する方法がわからないRスクリプトでエラーが発生します。

そしてそのファイルの一つはBRNSPC_varID_chunk_00.txt…それが終わったらいいですBRNSPC_varID_chunk_0.txt

ありがとう

ベストアンサー1

与えられた

$ touch BRNSPC_varID_chunk_07.txt BRNSPC_varID_chunk_00.txt BRNSPC_varID_chunk_70.txt

bashもしそうなら、少なくともksh、、、zsh

$ for f in ./*chunk_0?.txt; do echo mv "$f" "${f/chunk_0/chunk_}"; done
mv ./BRNSPC_varID_chunk_00.txt ./BRNSPC_varID_chunk_0.txt
mv ./BRNSPC_varID_chunk_07.txt ./BRNSPC_varID_chunk_7.txt

echoそれが正しいことをすることを確信したら、取り除きなさい。

chunkあいまいさがない場合(つまり、_0名前の他の場所にシーケンスが表示されない場合)、プレフィックスを削除できます。

fromを使用するなど、移植性の悪いソリューションなどがたくさんありますrenamemmvrenameutil-linux

rename.ul -n -v chunk_0 chunk_ ./*chunk_0?.txt

-n実際に名前を変更するには削除してください)。

おすすめ記事