Linux初心者が来ました。
最初のbashスクリプトを作成していて、csvファイル名を切り取り削除するコードを書いていますが、これは非常に静的で、切りたい文字を手動で計算する必要があります。ファイルのプレフィックスを動的に削除したいと思います。人々がプレフィックスを保持する例をたくさん見ましたが、実際には最後の7文字(またはそれ以上...ファイル拡張子を含む)を維持したいと思います。
例は次のとおりです。
# Sample of filenames in a folder
SOLO_PAL3.xyz.ino.IVC.csv -> renamed to IVC.csv
SOLO_PAL3.xyz.ino.EVC.csv -> renamed to EVC.csv
SOLO_PAL3.xyz.ino.VVC.csv -> renamed to VVC.csv
SOLO_PAL3.xyz.ino.WVC.csv -> renamed to WVC.csv
ファイル名の切り捨て - この機能が機能している間、cut -c19-は現在特定のファイル長の整数を手動で更新する必要があります。この例では、実行する前に変更を確認できるようにエコーを維持しました。
for file in ???*;
do echo mv $file `echo $file | cut -c19-`;
# Something equivalent to RIGHT($file,$file.length-($file.length)-7))?
done
よろしくお願いします!
ベストアンサー1
あなたの問題は次のように非常に似ています。これ、私の答えは部分的にその質問に対する答えに基づいています。
for f in *.csv
do
newf="${f%.csv}"
newf="${newf##*.}"
printf '%s.csv\n' "${newf}"
done
問題ドメインをすべてのファイルのセットとして定義したので、最後からファイルを削除して*.csv
ループを開始します。.csv
次に、ランダムな文字列とドットが続く最長の接頭辞を削除します.
。最後にprintf
残ったデフォルトのファイル名と再添付.csv
。
コマンドを実行する実際のメカニズムは、mv
読者に練習の問題として残します。