প্রথমে ডিরেক্টরি সহ ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করুন


22

আমার দুটি প্রশ্ন আছে। প্রথমত, কোন কমান্ড ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করে তবে ডিরেক্টরিগুলি প্রথমে তালিকাবদ্ধ করে?

দ্বিতীয় প্রশ্ন: আমি একক ডিরেক্টরিতে ফাইলের একটি তালিকা অনুলিপি করতে চাই, কিন্তু লক্ষ্য ডিরেক্টরিটি কমান্ডের প্রথম ফাইলের নাম বানাতে চাই।


5
lsএকটি --group-directories-firstসুইচ আছে।
জেসনওয়ারিয়ান

1
-tসম্ভবত একটি জিএনইউ-কেবলমাত্র বিকল্প cpযা এটি একটি স্পষ্ট লক্ষ্য নির্দেশিকা গ্রহণ করে এবং তাই শুরু সহ কমান্ড লাইনের যে কোনও জায়গায় যেতে পারে।
jw013

উত্তর:


36

জিএনইউ পেয়েছেন?

এর gnu সংস্করণ lsরয়েছে --group-directories-first। এবং cpআছে -t

জিএনইউ নেই?

যেসব সিস্টেমে জিএনএস নেই ls, সেগুলিগুলিতে / এবং উপযুক্ত বিকল্পগুলির findসাথে আপনার সেরা বেট দুটি ধারাবাহিক কল ।-maxdepth n-mindepth n-type t

find . -maxdepth 1 -mindepth 1 -type d
find . -maxdepth 1 -mindepth 1 \! -type d

ফাইলগুলি অনুলিপি করার জন্য, প্রথমে লক্ষ্য সহ, আপনাকে একটি স্ক্রিপ্ট লিখতে হবে যা প্রথম যুক্তিটি সংরক্ষণ করে, তারপরে ব্যবহার করে shiftএবং যুক্তিকে শেষ পর্যন্ত যুক্ত করে।

#!/bin/sh
target="$1"
shift
cp -r -- "$@" "$target"

সতর্ক থেকো!

যদি আপনি এগুলি একসাথে ব্যবহার করার পরিকল্পনা করছেন - অর্থাত্, তালিকাটি সংগ্রহ করে findবা ls(সম্ভবত ব্যবহারের মাধ্যমে xargs) তালিকাটি সংগ্রহ করে এবং cp(বা একটি cpমোড়ক) দিয়ে দেওয়ার ক্ষেত্রে, আপনার অবশ্যই সচেতন হওয়া উচিত ফাইলগুলির তালিকাগুলি পার্সিংয়ে কী কী বিপদ রয়েছে (মূলত, ফাইলের নামগুলি পারে নিউলাইনের মতো অক্ষর রয়েছে যা আপনার স্ক্রিপ্টটিকে বিশৃঙ্খলা করতে পারে)। বিশেষ করে, দেখব find'র -execএবং -print0বিকল্প এবং xargsএর -0বিকল্প।

দক্ষতার সাথে ডিরেক্টরি গাছ অনুলিপি করার জন্য একটি বিকল্প সরঞ্জাম।

পরিবর্তে আপনি ব্যবহার করতে চাইছেন rsync; এটির কার্যকারিতা প্রচুর রয়েছে যা আপনার কাজটি আরও সহজ করে তুলতে পারে।


এটা অসাধারণ. আরও সাধারণভাবে, আমার জিএনইউ সংস্করণ আছে কিনা তা জানার কোনও উপায় আছে? (বিকল্প চেষ্টা ছাড়া অন্য --group-directories-first)।
আমেলিও ওয়াজকেজ-রেইনা

3
আপনার ls --versionকোনটি আছে তা খুঁজে বের করতে আপনি ছুটে যেতে পারেন।
শন জে গফ

6

অ-জিএনইউয়ের জন্য প্রথমে ডিরেক্টরিগুলি তালিকাবদ্ধ করুন ls:

ls -l | sort

দ্রষ্টব্য, এটি অন্যান্য অদ্ভুত স্টাফগুলির যেমন সিমলিংক, সকেট এবং পাইপগুলির পাশাপাশি (যথাযথভাবে গোষ্ঠীযুক্ত, অবশ্যই) তালিকাভুক্ত করবে, তবে সেই জিনিসটি বিবেচনা করা বেশ বিরল যা কোনও সমস্যা হওয়া উচিত নয়। অন্যথায় ফিল্টার হবেls -l | grep '^(-|d)' | sort


1
গৃহীত উত্তরের চেয়ে +1 চালাক এবং খাটো। এটি বাদে সত্যই হওয়া উচিত sort -r
পাইথননট

1
ls -l | সাজানো কোনও ম্যাকের জন্য আমার পক্ষে কাজ করে না। এটি প্রথমে ডিরেক্টরিগুলিকে গোষ্ঠীভূত করে তবে এটি তাদের বাছাই করে না এবং পরবর্তী ফাইলগুলির নামও এটি সাজায় না।
রায়

এছাড়াও দ্রষ্টব্য: using | ব্যবহার করে সাজানো` আপনার রঙটিকে এখন পাঠ্য হিসাবে সরিয়ে ফেলবে।
জয়রিজ্জো

5

বাশ এবং zsh এর জন্য কাজ করে

কেবল alias / .bashrc বা ~ / .zshrc এ উপন্যাস যুক্ত করুন

# Colorize the ls output ##
alias ls='LC_COLLATE=C ls -h --group-directories-first --color=auto'

এছাড়াও আপনার যদি জেডএসএইচ থাকে তবে আপনি "কে" ইউটিলিটি ব্যবহার করতে পারেন

k -h --group-directories-first

এখানে চিত্র বর্ণনা লিখুন

নিম্নলিখিতটি ~ / .zshrc এ রেখে কেবল অ্যান্টিজেন দিয়ে ইনস্টল করুন

antigen bundle reduxionist/k --branch=add-sort-options

1
ওরফে অফার দেওয়ার জন্য দুর্দান্ত উত্তর
рüффп

1

নন-জিএনইউয়ের জন্য, awk অন্যান্য সমস্ত ক্ষেত্রগুলি ফিল্টার করতে পারে:

ls -l | sort -r | awk 'NF==9 { if ($1~/^d/) { print $9 "/" } else { print $9 } }'
  • এনএফ == 9: আউটপুটটিতে ls -lঅবশ্যই 9 টি ক্ষেত্র থাকতে হবে
  • যদি লাইনটি 'ডি' দিয়ে শুরু হয়, একটি অতিরিক্ত '/' মুদ্রণ করে
  • অন্যথায় কেবল ফাইলের নাম

আউটপুটটি দেখতে ls -1প্রথম দেখায় তবে ডিরেক্টরিগুলি সহ:

node_modules/
src/
e2e/
angular.json
tslint.json
package.json
README.md

Ls ম্যান পেজের "দ্য লং ফর্ম্যাট" অনুসারে, যখন অন্যান্য ফাইলের প্রকার জড়িত থাকে, আউটপুট ক্রমটি হওয়া উচিত:

   s     Socket link.
   p     FIFO.
   l     Symbolic link.
   d     Directory.
   c     Character special file.
   b     Block special file.
   -     Regular file.

একটি সহজ ব্যাশ ফাংশন (এটি আপনার .bash_profile বা .Bashrc এ রাখুন):

function l1() {
  ls -l $* | sort -r | awk 'NF==9 { if ($1~/^d/) { print $9 "/" } else { print $9 } }'
}

0

জন্য zshএর পরিপূরণ তালিকা, আপনি সেট করতে পারেন list-dirs-firstশৈলী trueজন্য ডিরেক্টরি প্রথমে দেখানো হবে। আপনার ~/.zshrc:

zstyle ':completion:*' list-dirs-first true

(এটি এখানে সমস্ত সমাপ্তি উইজেটগুলির জন্য প্রয়োগ করা হয়েছে যা এটি সমর্থন করে এবং সমস্ত কমান্ডের জন্য; আপনি এটি সীমাবদ্ধ করতে পারেন যদি আপনি চান তবে zstyleবিশদটির জন্য ডকুমেন্টেশন দেখুন)

আপনি যদি ইতিমধ্যে এটি না করে থাকেন compinstallতবে বর্ণনাসঙ্গী এবং অন্যান্য সমস্ত গুডিসহ রঙের সমাপ্তির তালিকাগুলি সংগ্রহ করার জন্য অবশ্যই দৌড়াতে ভুলবেন না ।

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