このようにファイル名を変更する必要があります
transform.php?dappName=Test&transformer=YAML&v_id=XXXXX
これだけに
XXXXX.txt
どうすればいいですか?
mv
少なくとも25000ファイルであるため、複数のコマンドが必要であることを理解しています。
最も簡単な解決策は、 「mmv」を使用することです
あなたは書ける:
mmv "long_name*.txt" "short_#1.txt"
「#1」は、最初のワイルドカードに一致するものに置き換えられます。同様に、#2 は 2 番目に置き換えられます。
だからあなたは次のようなことをします
mmv "index*_type*.txt" "t#2_i#1.txt"
index1_type9.txt の名前を t9_i1.txt に変更するには
mmv は、多くの Linux ディストリビューションでは標準ではありませんが、ネット上で簡単に見つけることができます。
zshを使用している場合は、次のこともできます。
autoload zmv
zmv 'transform.php?dappName=Test&transformer=YAML&v_id=(*)' '$1.txt'
非常に単純なシェルスクリプトを作成します。このスクリプトでは、最も難しい部分が名前を変更しています。
スクリプトの概要は簡単です(ここではbash構文):
for i in 'transform.php?dappName=Test&transformer=YAML&v_id='*
do
mv $i <modified name>
done
名前の変更には多くのオプションがあります。最も簡単なのは、おそらく次のようなawkワンライナーだと思います
`echo $i | awk -F'=' '{print $4}'`
それで...
for i in 'transform.php?dappName=Test&transformer=YAML&v_id='*
do
mv $i `echo $i | awk -F'=' '{print $4}'`.txt
done
さて、以下で指摘するように、これはファイルの十分な数のリストに対して必ずしも機能するとは限りません。*は、コマンドラインの長さの制限を超えます。したがって、次を使用します。
$ find . -name 'transform.php?dappName=Test&transformer=YAML&v_id=*' -prune -print |
while read
do
mv $reply `echo $reply | awk -F'=' '{print $4}'`.txt
done
または、ls の結果を perl 正規表現にパイプすることもできます。
名前を変換したいもの(perl、sed、awkなど)を使用できます。Pythonワンライナーを使用します:
for file in 'transform.php?dappName=Test&transformer=YAML&v_id='*; do
mv $file `echo $file | python -c "print raw_input().split('=')[-1]"`.txt;
done
これは完全にPythonでの同じスクリプトです:
import glob, os
PATTERN="transform.php?dappName=Test&transformer=YAML&v_id=*"
for filename in glob.iglob(PATTERN):
newname = filename.split('=')[-1] + ".txt"
print filename, '==>', newname
os.rename(filename, newname)
補足:ページをつかんでいる間、正しい名前でページを保存する方が簡単だったでしょう...
find -name '*v_id=*' | perl -lne'rename($_, qq($1.txt)) if /v_id=(\S+)/'
ファイルの名前を簡単に一括変更できる Perl スクリプトであるren-regexpを使用します。
21:25:11 $ ls
transform.php?dappName=Test&transformer=YAML&v_id=12345
21:25:12 $ ren-regexp 's/transform.php.*v_id=(\d+)/$1.txt/' transform.php*
transform.php?dappName=Test&transformer=YAML&v_id=12345
1 12345.txt
21:26:33 $ ls
12345.txt
これも機能するはずです:
prfx='transform.php?dappName=Test&transformer=YAML&v_id='
ls $prfx* | sed s/$prfx// | xargs -Ipsx mv "$prfx"psx psx
わかりました、これには Windows バイナリを実行できる必要があります。
ただし、 Total Commanderを実行できる場合は、次のようにします。
* ですべてのファイルを選択し、ctrl-Mを押します
検索フィールドに「transform.php?dappName=Test&transformer=YAML&v_id=」を貼り付けます
(置換は空のままにします)
スタートを押します
これほど簡単なことはありません。このダイアログで正規表現を使用して名前を変更することもでき、ファイルの名前がどのように変更されるかをリアルタイムでプレビューできます。