この Perl ワンライナーは、必要な名前変更を表示します:
perl -e 'open $f[$_-1], "file$_.txt" for 1,2; print "rename @n\n" while chomp(@n = map ''.<$_>, @f)'
これが機能する場合は、 print
を置き換えます 実際の名前変更と使用を含むステートメント
perl -e 'open $f[$_-1], "file$_.txt" for 1,2; rename @n while chomp(@n = map ''.<$_>, @f)'
実際の名前変更を行います。
paste
を使用できます ファイルを並べてフォーマットするには:
$ paste -d" " file1.txt file2.txt
/etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
/etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
/etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
/etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
/etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0
例:
$ paste -d" " file1.txt file2.txt | while read from to; do echo mv "${from}" "${to}"; done
mv /etc/port1-192.9.200.1-255.555.255.0 /etc/port1-192.90.2.1-255.555.0.0
mv /etc/port2-192.9.200.1-255.555.255.0 /etc/port2-192.90.2.1-255.555.0.0
mv /etc/port3-192.9.200.1-255.555.255.0 /etc/port3-192.90.2.1-255.555.0.0
mv /etc/port4-192.9.200.1-255.555.255.0 /etc/port4-192.90.2.1-255.555.0.0
mv /etc/port5-192.9.200.1-255.555.255.0 /etc/port5-192.90.2.1-255.555.0.0
もちろん、いくつかの安全チェック ([ -f "${from}" ]
、...).
免責事項:ファイル名にスペースが含まれていない場合にのみ機能します。
paste -d " " file1.txt file2.txt
この仕事には最適です。
ただし、Windows 環境でテキスト ファイルを処理し、GNU ペーストを使用する場合は、必ずファイルを Unix 形式 (CR) に変換し、(CR-LF) のファイルを使用しないでください。
GNU ペーストは DOS フォーマットを適切に処理していないようで、解析は予測できません。予想される出力は、警告なしで不規則で予期しないものです。
gVim を使用して簡単に変換できます (メニュー 編集 → ファイル設定 → ファイル形式 ).