Saya ingin tahu bagaimana saya bisa menemukan dan mengganti teks tertentu dalam banyak file seperti di Notepad ++ di tutorial yang ditautkan.
misalnya: http://cybernetnews.com/find-replace-multiple-files/
text-editor
Faruk Uzun
sumber
sumber
Jawaban:
Di sini saya menggunakan sed untuk mengganti setiap kemunculan kata "cybernetnews" dengan "cybernet" di setiap file dengan ekstensi, c, dalam direktori, / home / user / direktori /.
Variasi yang lebih umum di mana Anda mencari secara rekursif dari direktori eksekusi dan hanya beroperasi pada file biasa, dapat dibaca, dan dapat ditulis:
sumber
cyber net news
? Bagaimana saya bisa mengonversi ini menjadicyber net
?sed -i -e "s/cyber\snet\snews/cyber net/g"
Editor aliran, sed, adalah utilitas yang kuat untuk jenis pekerjaan ini dan merupakan pilihan pertama saya, namun, jika Anda ingin melakukan ini dari editor teks biasa menggunakan aplikasi asli berbasis Ubuntu, saya sarankan Anda melihat Jedit , Ini tersedia di repositori dan dapat diinstal dengan mengetikkan konsol Anda:
Mulai jedit, klik item menu pencarian, di daftar menu, klik item Search in Directory, Anda akan disajikan dialog di bawah ini:
Ini mirip dengan Notepad ++ dan melakukan hal yang sama, saya percaya ini yang Anda inginkan.
sumber
sed
.Opsi GUI lainnya adalah regexxer :
sumber
mengganti semua kejadian oldtext dengan newtext di semua file di folder saat ini. Namun Anda harus melarikan diri dari semua karakter khusus perl dalam oldtext dan newtext menggunakan backslash.
sumber
Periksa dengan Geany , itu adalah pengganti NPP yang sempurna untuk Linux. Anda dapat melakukan hal itu plus Anda dapat menggunakan regex.
sumber
Saya menulis naskah kecil untuk hal ini. Jika Anda hanya membutuhkan dasar-dasar dan tidak terbiasa dengan sed dll, lihat di sini: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -a-set-of-file /
Scriptnya adalah sebagai berikut:
sumber
Anda dapat menggunakan skrip ini, menyalin kode, dan membuat file
find_and_replace_in_files.sh
.Saya telah memodifikasinya sedikit; tolong katakan pendapatmu.
sumber
Program lain adalah Searchmonkey .
sumber
bekerja untuk saya di fedora
sumber
sed
instance jauh lebih sedikit ! Jadi ini jauh lebih cepat dalam hal waktu CPU. Karena waktu akses file akan terbatas, saya pikir itu tidak jauh lebih cepat dalam waktu jam, tetapi memberikan beban sistem yang lebih rendah. Catatanxargs
akan menempatkan banyak, seperti hundered, nama file pada baris perintah dari satused
perintah - mengisi ukuran buffer yang tersedia berdasarkan panjang lintasan.+
bukan\;
difind
, kan?xargs
, tapi Anda benar; dariman find
:-exec command {} +
: ...The command line is built in much the same way that xargs...
. Buat saya berpikir tentang baris perintahgit filter-branch
...;)Solusi yang sangat sederhana: ganti semua
*.txt
file di folderstring_1
denganstring_2
:sumber
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)