Saya perlu menghilangkan file textClipping dari daftar. Sayangnya beberapa file telah sangat dinamai dan mengandung carriage return. Saya membutuhkan perl regex untuk itu akan cocok dengan setiap jalur dari /Volumes/
untuk .textClipping
termasuk baris baru.
/Volumes/.*\.textClipping
menangkap dua yang pertama .textClipping
file, tetapi bukan yang ketiga, dengan baris baru. Atau saya bisa menangkap semuanya dari dulu /Volumes/
untuk bertahan .textClipping
, tapi itu juga tidak membantu.
Ada ide? Terima kasih banyak.
/Volumes/folder/folder/file.doc
/Volumes/folder/folder/file.textClipping
/Volumes/folder/folder/file.doc
/Volumes/folder/folder/file.textClipping
/Volumes/folder/folder/fi
le.textClipping
/Volumes/folder/folder/file.doc
Saya tidak tahu dari pertanyaan Anda di mana dalam nama file karakter baris baru bisa, jadi saya berasumsi mereka bisa berada di mana saja. Ini membuat pencocokan lebih menantang.
Solusi paling sederhana mungkin dengan menghapus semua baris baru dari input sebelum menghapus nama file yang tidak diinginkan.
Saya membuat skrip ini:
dan berikan contoh Anda sebagai filelist.txt:
yang memberikan hasil ini:
Akhirnya, saya pikir Anda harus sangat berhati-hati menggunakan pola yang Anda sarankan dalam pertanyaan Anda:
sejak . akan menangkap karakter apa pun kecuali baris baru, tetapi termasuk spasi. Saya menjalankan pola itu pada input ini seperti yang disarankan oleh pertanyaan Anda:
dan dapatkan hasil ini, yang menurut saya bukan yang Anda inginkan:
Edit : Anda baru saja memposting Jawaban untuk pertanyaan Anda sendiri di mana Anda jatuh ke dalam perangkap ini lagi, tetapi saya tidak memiliki Reputasi yang cukup untuk memposting komentar di atasnya. Dari pada
/Volumes/.*\n*.textClipping/g
(yang akan cocok dengan spasi, dan dengan demikian berpotensi menghilangkan lebih dari satu nama file sekaligus) Saya sangat menyarankan Anda mempertimbangkannya/Volumes/[^ ]*\n*.textClipping/g
; itu[^ ]*
akan cocok dengan semuanya kecuali spasi.sumber