फ़ाइल नाम में newline वाली फ़ाइलों को कैसे खोजें?


10

मैं उन फाइलों को खोजने की कोशिश कर रहा हूं, जिनके नाम में एक नई रेखा है। लेकिन मैं समझ नहीं पा रहा हूं कि किस पैटर्न का उपयोग करना है।

निम्नलिखित काम करता है, लेकिन अगर मैं इसे इंडेंटेड कोड में उपयोग करना चाहता हूं तो यह बहुत उपयोगी नहीं है।

find . -name '*
*'

मैंने इन दोनों की कोशिश की और वे केवल उन फ़ाइलनामों को खोजने में सफल रहे जिनमें अक्षर n शामिल था :

find . -name '*\n*'
find . -name "*\n*"

फिर मैंने पाया कि बैकस्लैश एस्केप सीक्वेंस कैसे लिखें और यह कोशिश की:

find . -name "*$'\n'*"

लेकिन वह कुछ भी नहीं है। मुझे पैटर्न कैसे लिखना चाहिए?

जवाबों:


13

शेल स्क्रिप्टिंग में, सब कुछ एक स्ट्रिंग है। आप करते उद्धृत करने के लिए की जरूरत *को रोकने के लिए फ़ाइल नाम विस्तार , लेकिन आप दोहरे उद्धरण चिह्नों के अंदर बैकस्लैश एस्केप अनुक्रम डाल करने के लिए नहीं चाहते।

आप बस एक दूसरे के ठीक पीछे रखकर तारों को समतल कर सकते हैं।

find . -name '*'$'\n''*'

लेकिन बेहतर पठनीयता के लिए, आप पूरे स्ट्रिंग के लिए ANSI-C क्वोटिंग का उपयोग कर सकते हैं ।

find . -name $'*\n*'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.