Linuxでファイル名を変更するシェルスクリプトを書くには?
前任者:
234-2020-08-06-12-13-14-abc_up.csv
次に名前が変わりました。
234-abc_up-2020-08-06-12-13-14.csv
ベストアンサー1
このシェルスクリプトは次のタスクを実行します。
#!/bin/bash
old_filename=$1
IFS='-' read -r -a arr <<< $old_filename # read dash-separated substrings into the array 'arr'
tmpsub=${arr[7]%.csv.gz} # extract 7th substring, stripping out the file extension
for i in $(seq 6 -1 1) # shifts right the substrings
do # in the array by one
arr[$(($i+1))]=${arr[$i]} # position, starting by 1
done
arr[1]=$tmpsub # set the substring 1 to the value of the previous 7th substring
new_filename=$(printf -- "-%s" "${arr[@]}") # join the substrings into a dash separated string
new_filename=${new_filename:1}".csv.gz" # add the extension
mv $old_filename $new_filename # rename the file
たとえば、名前を付けてrename_csv.sh
を使用して実行可能にする場合は、元のchmod
ファイル名のみを使用して次のように呼び出すことができます。
./rename_csv.sh 234-2020-08-06-12-13-14-abc_up.csv.gz
出力は表示されませんが、ファイル名を必要に応じて変更します。