मैं कमांड से सभी फाइल आउटपुट को कैसे स्थानांतरित करूं?


22

उनके पास अटैचमेंट शब्द के बिना फाइल खोजने के लिए मेरे पास यह grep कमांड है।

grep -L -- Attachments *

मैं उन सभी फाइलों को स्थानांतरित करना चाहता हूं जो उस कमांड से आउटपुट हैं। मैं इसे कैसे कर सकता हूँ? क्या मैं एक पाइप का उपयोग करता हूं? क्या मैं फुल-ऑन स्क्रिप्ट में बयान करता / करती हूं?

जवाबों:


18

यदि आप जानते हैं कि फ़ाइल नामों में कोई भी नई लाइनें, टैब, रिक्त स्थान या ग्लोब संयोजन शामिल हैं जो एक मैच का उत्पादन कर सकते हैं, तो यह एक बंद मामले के लिए आसान हो सकता है:

mv $(grep -L Attachments *) dest_dir

36

क्या आप क्या करना चाहते एक पाइप का उपयोग करें और grepएस -Zविकल्प:

GNU grep और mv का उपयोग करना

grep -LZ -- Attachments * | xargs -0 mv -t target_directory

-Zके साथ संयुक्त xargs -0विशेष वर्ण के साथ हैंडल किसी भी फ़ाइल नाम।

BSD grep और mv का उपयोग करना (जैसे MacOS X पर)

grep -L --null -- Attachments * |
while IFS= read -r -d "" file; do 
    mv "./$file" target_directory
done

बीएसडी पर, grep -Zजिसका मतलब है डिकम्प्रेस , grep --nullबीएसडी और जीएनयू दोनों पर काम करता है। बीएसडी के पास mvविकल्प की कमी है-t

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