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


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.