巡回スクリプトへの入力引数として提供されたディレクトリ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
。