1

すべて同じディレクトリにあるいくつかのファイルの名前を変更したいと思います。使用されるファイル名のパターンはPrefix_ddmmyy.tex、ヨーロッパの日付形式です。Prefix_yymmdd.tex読みやすさと順序のために、正規の日付形式のパターンでファイルの名前を変更したいと思います。

完全なディレクトリに対してこれを自動的に行う方法を考えている人はいますか? 私のsedとregexpの知識はあまり鋭くない...

4

3 に答える 3

3

Prefix_*.tex のファイルの場合。do file_new= echo "$file" | sed -e 's:\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)\(\.tex\):\3\2\1\4:' test "$file" != "$file_new" && mv -f "$file" "$file_new" done

または、多数のファイルがある場合、および/またはファイルを再帰的に処理する場合は、次のように置き換えます。

for file in Prefix_*.tex ; do

と:

find . -name Prefix_*.tex -print | while read file ; do

または (非再帰、GNU):

find . -maxtdepth 1 -name Prefix_*.tex -print | while read file ; do
于 2009-03-13T07:19:10.093 に答える
1

外部コマンドなしで任意の bourne タイプのシェルで実行することもできます。

for f in *.tex; do
  _s=.${f##*.} _f=${f%.*} _p=${f%_*}_ 
  _dt=${_f#$_p} _d=${_dt%????} _m=${_dt%??} 
  _y=${_dt#$_m} _m=${_m#??}
  mv -- "$f"  "$_p$_y$_m$_d$_s"
done  

zshの場合は次のようになります。

 autoload -U zmv
 zmv '(*_)(??)(??)(??)(.tex)' '$1$4$3$2$5'
于 2009-03-13T11:46:47.440 に答える
0

「 mmv 」を試すことができます。

于 2009-03-13T09:49:31.480 に答える