0

このパターンで名前が付けられたディレクトリ内のファイルの名前を変更したい:

string1-number.html

例えば:

English-5.html

私がやりたいのは、次のようにファイルの名前を変更することです。

string2-number.string3

例えば:

Dictionary-5.en

これどうやってするの?このスクリプトを使用しましたが、何も起こりませんでした:

echo "English-5.html" | sed   's%\({English}\).\(\.*\)\(html\)%dictionary\2\en%'
4

4 に答える 4

1

mmv ツールの使用をお勧めします: http://linux.dsplabs.com.au/mmv-copy-append-link-move-multiple-files-under-linux-shell-bash-by-wildcard-patterns-p5/

これで次のことができます:

mmv *-*.html Dictionary-#2.en 
于 2012-06-24T06:54:01.003 に答える
0

2 つのエラーが{...}あります: は必須ではありません\..

\.はリテラルのドットに.一致し、単一の文字に一致します。

echo "English-5.html" |
sed 's%\(English\)\(.*\)\.\(html\)%dictionary\2.en%'
于 2012-06-24T09:50:28.887 に答える
0

この回答は、既に投稿されたコマンドのいくつかのマイナーな最適化をsed示し、実際にファイルの名前を変更する方法を示しています (現在のフォルダー内):

 for f in *; do mv "$f" $(echo "$f" |\
 sed 's/^English-\([0-9]\+\)\.html$/dictionary-\1\.en/'); done
于 2012-06-24T10:06:05.670 に答える
0
echo "English-5.html" | sed 's%English\(-[0-9][0-9]*.\)html%dictionary\1en%'

説明:

を探していますEnglish

その後に、ダッシュ、1 つ以上の数字、およびドットが続きます-[0-9][0-9]*.(この部分をエスケープした括弧で囲み、グループ (グループ 1) にします)。

に続くhtml

置換テキストでは\1、グループ 1 の内容と変更されたテキストを出力するために使用します。

于 2012-06-24T07:00:53.190 に答える