হ্যাঁ, find ./work -print0 | xargs -0 rm
এরকম কিছু কার্যকর করা হবে rm ./work/a "work/b c" ...
। আপনি যাচাই করতে পারেন echo
, find ./work -print0 | xargs -0 echo rm
কার্যকর করা হবে এমন কমান্ডটি মুদ্রণ করবেন (সাদা স্থান বাদে যথাযথভাবে পালানো হবে, যদিও তা এটি প্রদর্শিত echo
হবে না)।
পেতে xargs
মাঝখানে নাম করা জন্য, আপনাকে যোগ করতে হবে -I[string]
, যেখানে [string]
আপনি এই ক্ষেত্রে আপনি ব্যবহার চাই এ, যুক্তি দ্বারা প্রতিস্থাপন করা করতে চান -I{}
, যেমন <strings.txt xargs -I{} grep {} directory/*
।
আপনি আসলে যা ব্যবহার করতে চান তা হ'ল grep -F -f strings.txt
:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. The empty file
contains zero patterns, and therefore matches nothing. (-f is
specified by POSIX.)
সুতরাং grep -Ff strings.txt subdirectory/*
যে কোন স্ট্রিং এর সব ঘটনার পাবেন strings.txt
একটি আক্ষরিক হিসাবে, আপনি ড্রপ যদি -F
বিকল্পটি ফাইলে রেগুলার এক্সপ্রেশনের ব্যবহার করতে পারেন। আপনি আসলে ব্যবহার করতে grep -F "$(<strings.txt)" directory/*
পারে। আপনি যদি অনুশীলন করতে চান তবে আপনি find
সারাংশে শেষ দুটি উদাহরণ ব্যবহার করতে পারেন। আপনি যদি কেবল প্রথম স্তরের পরিবর্তে পুনরাবৃত্তি অনুসন্ধান করতে চান তবে সংক্ষিপ্তসারেও আপনার কয়েকটি বিকল্প রয়েছে।
সারসংক্ষেপ:
# grep for each string individually.
<strings.txt xargs -I{} grep {} directory/*
# grep once for everything
grep -Ff strings.txt subdirectory/*
grep -F "$(<strings.txt)" directory/*
# Same, using file
find subdirectory -maxdepth 1 -type f -exec grep -Ff strings.txt {} +
find subdirectory -maxdepth 1 -type f -print0 | xargs -0 grep -Ff strings.txt
# Recursively
grep -rFf strings.txt subdirectory
find subdirectory -type f -exec grep -Ff strings.txt {} +
find subdirectory -type f -print0 | xargs -0 grep -Ff strings.txt
আপনি -l
যদি সত্যিকারের লাইনটি দেখতে না চান তবে প্রতিটি মিলে যাওয়া ফাইলটির নাম পেতে বিকল্পটি ব্যবহার করতে পারেন :
-l, --files-with-matches
Suppress normal output; instead print the name of each input
file from which output would normally have been printed. The
scanning will stop on the first match. (-l is specified by
POSIX.)