আমি যেভাবে এর কাছে যাচ্ছি তা হ'ল প্রথমে ফাইল থেকে uuids পাওয়া, তারপরে ব্যবহার find
awk '{print $1}' listfile.txt | while read fileName;do find /etc -name "$fileName*" -printf "%p FOUND\n" 2> /dev/null;done
পাঠযোগ্যতার জন্য,
awk '{print $1}' listfile.txt | \
while read fileName;do \
find /etc -name "$fileName*" -printf "%p FOUND\n" 2> /dev/null;
done
/etc/
Passwd, গোষ্ঠী, fstab, এবং THISDOESNTEXIST ফাইলের নাম অনুসন্ধান করে ফাইলগুলির একটি তালিকার উদাহরণ ।
$ awk '{print $1}' listfile.txt | while read fileName;do find /etc -name "$fileName*" -printf "%p FOUND\n" 2> /dev/null; done
/etc/pam.d/passwd FOUND
/etc/cron.daily/passwd FOUND
/etc/passwd FOUND
/etc/group FOUND
/etc/iproute2/group FOUND
/etc/fstab FOUND
যেহেতু আপনি ডিরেক্টরিটি ফ্ল্যাট হিসাবে উল্লেখ করেছেন তাই আপনি -printf "%f\n"
কেবল ফাইলের নাম মুদ্রণ করতে বিকল্পটি ব্যবহার করতে পারেন
এটি যা করে না তা হ'ল ফাইলগুলি তালিকাভুক্ত করা। find
এর ছোট অসুবিধা হ'ল এটি কোনও ফাইল খুঁজে না পাওয়া সত্ত্বেও আপনাকে জানায় না, কেবল যখন এটি কোনও কিছুর সাথে মেলে। তবে যা করা যায় তা হ'ল আউটপুটটি পরীক্ষা করা - যদি আউটপুট খালি থাকে তবে আমাদের একটি ফাইল নেই missing
awk '{print $1}' listfile.txt | while read fileName;do RESULT="$(find /etc -name "$fileName*" -printf "%p\n" 2> /dev/null )"; [ -z "$RESULT" ] && echo "$fileName not found" || echo "$fileName found" ;done
আরও পঠনযোগ্য:
awk '{print $1}' listfile.txt | \
while read fileName;do \
RESULT="$(find /etc -name "$fileName*" -printf "%p\n" 2> /dev/null )"; \
[ -z "$RESULT" ] && echo "$fileName not found" || \
echo "$fileName found"
done
এটি এখানে কীভাবে এটি একটি ছোট স্ক্রিপ্ট হিসাবে সম্পাদন করে:
skolodya@ubuntu:$ ./listfiles.sh
passwd found
group found
fstab found
THISDONTEXIST not found
skolodya@ubuntu:$ cat listfiles.sh
#!/bin/bash
awk '{print $1}' listfile.txt | \
while read fileName;do \
RESULT="$(find /etc -name "$fileName*" -printf "%p\n" 2> /dev/null )"; \
[ -z "$RESULT" ] && echo "$fileName not found" || \
echo "$fileName found"
done
কেউ stat
বিকল্প হিসাবে ব্যবহার করতে পারে , যেহেতু এটি একটি ফ্ল্যাট ডিরেক্টরি, তবে কোড বেলো সাব-ডাইরেক্টরিগুলির জন্য পুনরাবৃত্তভাবে কাজ করবে না যদি আপনি কখনও সেগুলি যুক্ত করার সিদ্ধান্ত নেন:
$ awk '{print $1}' listfile.txt | while read fileName;do stat /etc/"$fileName"* 1> /dev/null ;done
stat: cannot stat ‘/etc/THISDONTEXIST*’: No such file or directory
আমরা যদি stat
ধারণাটি গ্রহণ করি এবং এটির সাথে চালাই তবে আমরা ফাইলের উপস্থিতি নেই কি না তার ইঙ্গিত হিসাবে স্টেটের প্রস্থান কোডটি ব্যবহার করতে পারি। কার্যকরভাবে, আমরা এটি করতে চাই:
$ awk '{print $1}' listfile.txt | while read fileName;do if stat /etc/"$fileName"* &> /dev/null;then echo "$fileName found"; else echo "$fileName NOT found"; fi ;done
নমুনা রান:
skolodya@ubuntu:$ awk '{print $1}' listfile.txt | \
> while read FILE; do
> if stat /etc/"$FILE" &> /dev/null ;then
> echo "$FILE found"
> else echo "$FILE NOT found"
> fi
> done
passwd found
group found
fstab found
THISDONTEXIST NOT found