2

たくさんのサイト名が入ったディレクトリがあるとしましょう。

すなわち

dev.domain.com
dev.domain2.com
dev.domain3.com

<domain>.comパイピングやリダイレクトbashを使用してLinuxCLIでそれらの名前を変更するにはどうすればよいですか?

行き詰まるよりもポイントに到達します。

find . -maxdepth 1 | grep -v "all" | cut --delimiter="." -f3 | awk '{ print $0 }'

ドメインの部分を教えてくれますが、それを乗り越えることはできません。awkも答えかどうかはわかりません。アドバイスをいただければ幸いです。

4

4 に答える 4

2

名前から先頭を削除するには、次の'dev.'ようにする必要があります。

for i in $(find * -maxdepth 1 -type d); do mv $i $(echo $i | sed 's/dev.\(.*\)/\1/'); done
于 2011-10-20T22:06:20.083 に答える
1

名前の変更コマンドを試してください。次のような正規表現を使用できます。

rename 's/\.domain.*/.com/' *.com
于 2011-10-20T20:00:32.603 に答える
1
for i in *; do mv $i $( echo $i | sed 's/\([^\.]*\).\([^\.]*\).\([^\.]*\)/\2.\1/' ); done

説明:

for i in *; do ....; done

すべてのファイルに対してそれを行う

echo $i | sed 's/\([^\.]*\).\([^\.]*\).\([^\.]*\)/\2.\1/'

「を除くすべての文字」の 3 つのグループを取ります。\2 の順序を変更します。\1 の意味: 2 番目のグループ、ドット、最初のグループを出力

$( ... )はsed の出力を取得し、 mv $iの後にそれを「貼り付け」、「コマンド置換」と呼ばれます http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution

于 2011-10-20T20:07:38.273 に答える
0

作業したいディレクトリの下で、次を試してください:

ls -dF *|grep "/$"|awk  'BEGIN{FS=OFS="."} {print "mv "$0" "$2,$3}'

mv コマンドを出力します。名前を変更したい場合は、次を追加"|sh"して終了します。

 ls -dF *|grep "/$"|awk  'BEGIN{FS=OFS="."} {print "mv "$0" "$2,$3}'|sh 
于 2011-10-20T20:44:50.737 に答える