বহনযোগ্যভাবে, আপনি করতে পারেন:
find . -type d -exec sh -c '
for dir do
[ -f "$dir/README" ] || printf "%s\n" "$dir"
done' sh '{}' +
[ -f file ]
ফাইলটি উপস্থিত থাকলে এবং এটি নিয়মিত ফাইল (সিমিলিং রেজোলিউশনের পরে) হিসাবে নিশ্চিত হয়ে থাকে কিনা তা পরীক্ষা করে ।
আপনি যদি পরীক্ষা করতে চান যে এটি কেবলমাত্র (সেই ডিরেক্টরিতে প্রবেশ হিসাবে), এটি নির্বিশেষে, আপনার প্রয়োজন হবে: [ -e file ] || [ -L file ]
যদিও নোট করুন যে এই পরীক্ষাগুলি সম্পাদন করার জন্য আপনাকে ডিরেক্টরিতে অনুসন্ধানের অনুমতি প্রয়োজন। আপনি [ -x "$dir" ]
cases ক্ষেত্রেগুলির জন্য অ্যাকাউন্টে কিছু পরীক্ষা যোগ করতে চাইতে পারেন:
find . -type d -exec sh -c '
for dir do
if [ -x "$dir" ]; then
[ -f "$dir/README" ] || printf "%s\n" "$dir"
else
printf >&2 "Cannot tell for \"%s\"\n" "$dir"
fi
done' sh '{}' +
বা সাথে রেসের অবস্থা এড়াতে zsh
:
find . -type d -exec zsh -c '
zmodload zsh/system
for dir do
ERRNO=0
if [ ! -f "$dir/README" ]; then
if [ "$errnos[ERRNO]" = ENOENT ]; then
printf "%s\n" "$dir"
else
syserror -p "ERROR: $dir/README: "
fi
fi
done' zsh '{}' +
এছাড়াও দেখুন আমি কীভাবে বলব যে ব্যাশে কোনও নিয়মিত ফাইল উপস্থিত না থাকে? তাই।