cディレクトリから始めてディレクトリとサブディレクトリを参照する方法(ここで、cはナビゲーションスクリプトの入力パラメータとして使用されます)

cディレクトリから始めてディレクトリとサブディレクトリを参照する方法(ここで、cはナビゲーションスクリプトの入力パラメータとして使用されます)

巡回スクリプトへの入力引数として提供されたディレクトリcから始めて、ディレクトリ構造を巡回するシェルスクリプトを作成したいと思います。c

  • 巡回中に訪問した各ディレクトリを画面に印刷したいと思います。
  • ディレクトリに加えて、サブディレクトリ、ファイルリスト、サイズも印刷したいと思います。
  • 1KBを超えるファイルは印刷する必要があります。

現在ディレクトリにあるファイルだけを一覧表示できますが、繰り返すことはできません。

これにより、サイズと権限を含む私のサンプルディレクトリのすべてのファイルが印刷されます。特定のディレクトリだけでなく、すべてのフォルダのディレクトリ、サブディレクトリ、およびファイルを印刷するためのディレクトリを入力として使用したいので、これは私が望むものではありません。

#!/bin/bash

for Sample in "$/Sample"/*
do
  ls -l
  #echo "$Sample"
done

#All this did was to print all the directories in my system. This is not what I want
#!/bin/bash

for d in "$dir"/*
do
  echo "$d"
done

#What I am working on now but it is giving me syntax errors near done. -d $file #prints out for directory, while -f $file print out files.
#!/bin/bash

  dir=$dir
for file in ${dir}/*; do
    if [[ -d $file ]]; then
        echo "$file:"
    if [[ -f $file ]]; then
        echo "$file"
    fi
done

ベストアンサー1

bashシェルは最善の選択ではありません。そしてzsh

#! /bin/zsh -

zmodload zsh/stat || exit

(( $# != 0 )) || set .

files=($^argv/**/*(ND/,.LK+1))
(( $#files == 0 )) ||
  stat -Ln +size -- $files

1KiB(1024バイト)より大きいサイズLK+1のファイル(通常のファイルのみ)がここで選択されます。.1KB(1000バイト)を超えるファイルの場合L+1000

おすすめ記事