ইউনিক্স / লিনাক্সের সাথে অনুসন্ধানের সময় লুকানো ফাইলগুলি বাদ দিন?


35

findলুকানো ফাইলগুলি বাদ দিতে আমার কোন বিকল্পগুলি ব্যবহার করতে হবে ?


4
একদিকে: এই কাজের জন্য কিছু বিশেষ সমর্থন না করার কারণটি হ'ল নেতৃস্থানীয় 'নামের ফাইলগুলির জন্য বিশেষ একমাত্র জিনিস' ' এটি lsনির্দিষ্টভাবে অনুরোধ না করা পর্যন্ত তালিকাভুক্ত করা হয় না: এগুলি প্রতিটি ক্ষেত্রে সম্পূর্ণ সাধারণ ফাইল, কেবলমাত্র এটি lsআপনাকে ডিফল্টরূপে উপেক্ষা করতে দেয়।
— ডিএমকেকে

2
প্রশ্ন: আপনি কি এমন কিছু গোপন করতে চান .hidden/visible.txt?
— কিথ থম্পসন

উত্তর:


14

আমি এটি এখানে পেয়েছি :

find . \( ! -regex '.*/\..*' \) -type f -name "whatever"

শুধু কেন নয় \( ! -name '.*' \)?
— মাধ্যাকর্ষণ

@ গ্রায়েটি আমি সবেমাত্র পেয়েছি, এটি কীভাবে কাজ করে তা আমি পুরোপুরি জানি না। আপনার কি কেবল লুকানো ফাইলগুলি নয়, গোপন ডিরেক্টরিগুলি এবং তাদের সমস্ত উপ-সামগ্রী এবং সাবফোল্ডারে লুকানো ফাইলগুলি লুকিয়ে রাখবেন?
— জারভিন

5
না, এটি হবে না: / তবে \( ! -path '*/.*' \)হবে।
— মাধ্যাকর্ষণ

@ গ্রায়েটি ইয়া, আমি অনুমান করি যে ওপি কী চায় সে সম্পর্কে আমি একটি ধারণা নিয়েছিলাম ... আপনার-নাম সমাধান সম্ভবত তারা যা চেয়েছিলেন তার নিকটতম।
— জারভিন

@ মাধ্যাকর্ষণ ও ড্যান: এটি (! -পথ '^। *') নয় কি ?? আপনার সমাধানগুলি কোনও 'ফাইল' থাকা ফাইলকে উপেক্ষা করবে। a.exe, b.out ইত্যাদির মতো ফাইলের নামের যে কোনও জায়গায় ....
— সফটওয়্যার মেকানিক

13

দেখে মনে হচ্ছে নেগ্রেশন গ্লোব প্যাটার্নটি ভালভাবে জানা নেই। সুতরাং আপনি ব্যবহার করতে পারেন:

find . -name "[!.]*"

12

এটি আপনার প্রশ্নের উত্তর দেয় না, তবে গোপনীয় ফাইলগুলি খুঁজে বের করার কাজটির জন্য আমি সমস্ত ফাইলগুলি সন্ধান করতে চাই তারপরে গ্রেপ দিয়ে ফিল্টার করব।

find . -type f | grep -v '/\.'

আপনার পদ্ধতির মতো তবে সম্ভবত কিছুটা সহজ।


আমার পক্ষে কাজ করা এক লাইনারগুলির মধ্যে এটিই ছিল।
— ই

7

নিম্নলিখিত findব্যবহারের চেষ্টা করুন :

find . -type f -not -path '*/\.*'

যা সমস্ত গোপন ফাইল (ফাইল এবং ডিরেক্টরিগুলি একটি বিন্দুর সাথে শুরু করে) উপেক্ষা করবে।


1

আমি একটি স্ক্রিপ্ট লিখেছিলাম findnhযা আমি বিশ্বাস করি যে আমি ওয়েবে সন্ধান করতে পেরেছি এমন প্রশ্নের উত্তরের চেয়ে কিছু প্রান্তের কেস ভালভাবে পরিচালনা করে।

#!/bin/bash

declare -a paths

while [ $# -ne 0 ]; do
  case "$1" in -*) break ;; esac
  paths+=("$1")
  shift
done

find "${paths[@]}" \( -name . -o -name .. -o \! \( -name '.*' -prune \) \) "$@"

উদাহরণস্বরূপ, আপনি একটি স্পষ্টভাবে সুনির্দিষ্ট গোপন ডিরেক্টরিতে একটি কমান্ডের মতো অনুলিপিযুক্ত ফাইল এবং ডিরেক্টরিগুলি খুঁজে পেতে পারেন findnh ~/.hiddendir/যা প্রদর্শিত হবে ~/.hiddendir/fileতবে তা নয় ~/.hiddendir/.superhiddenfile।


1
দুর্দান্ত কোডিং। ব্যতীত আমি যখন চেষ্টা করি তখন findnh ~/.hiddendir/কিছুই পাই না। তা বাদে এ কীভাবে ! -path '*/.*'এবং এর থেকে আলাদা find … | grep -v '/\.'?
— জি-ম্যান

1

আপনি লক্ষ্য হয় তাহলে findএবং grep, ripgrepডিফল্ট, যেমন দ্বারা লুকানো ফাইল বাদ নেই

rg --files

--files প্রতিটি ফাইল মুদ্রণ করুন যা অনুসন্ধান ব্যতীত অনুসন্ধান করা হবে।


1

fd

এর জন্য fdএকটি সহজ, আরও দ্রুত এবং ব্যবহারকারী-বান্ধব বিকল্প ব্যবহার করুন find। ডিফল্টরূপে, এটি:

  • ডিফল্টরূপে লুকানো ডিরেক্টরি এবং ফাইলগুলি উপেক্ষা করে।
  • .gitignoreডিফল্টরূপে আপনার থেকে নিদর্শনগুলি উপেক্ষা করে ।

বেঞ্চমার্ক বিশ্লেষণ পরীক্ষা করে দেখুন ।


1

লুকানো ফাইলগুলি খুঁজতে:

find -name '[.]*'

দৃশ্যমান ফাইলগুলি সন্ধান করতে:

find -name '[!.]*'

এটা যে সহজ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.