2016-08-05 9 views
0

以下のbashスクリプトを使用して、各レベル2の深さディレクトリにファイルリストを作成し、それぞれの特定のフォルダにテキストファイルとして出力します。以下のbashスクリプトの出力テキストファイルとして深度レベル2またはmaxdepthを使用する方法

しかし、私は、例えば

出力テキスト・ファイル名としてレベル2の深さのディレクトリを使用する方法「FILE.TXT」 としてそれに名前を付けることができます/ users/bin /にあるファイルを一覧表示し、出力ファイルの名前は "bin.txt"

ここに私が使用しているコードがあります。

あなたは(1)( '.'別に何のパスコンポーネントを持っていません)現在の作業ディレクトリ内のファイル、およびレベル2のディレクトリ内のファイルの(2)残りの部分を考慮する必要があり
#!/bin/bash 

    while IFS= read -r -d '' folder; do 

    echo $folder find "$folder" -type f > "$folder"/File.txt 

    done < <(find . -maxdepth 2 -mindepth 2 -type d -print0) 

答えて

0

。たとえば、現在のディレクトリにあるファイルのリストをpwd.txtに出力し、レベル2ディレクトリの各ファイルをそれぞれのディレクトリ名(たとえば./dir1/file_a.txtdir1.txt)のファイルに出力する場合は、次のようになりますあなたのループ本体:

tmp="${folder%/*}"      ## remove filename 
lvl2name="${tmp##*/}"      ## remove leading path components 
[[ $lvl2name = '.' ]] && lvl2name="pwd" ## handle files in pwd to pwd.txt 
echo $folder find "$folder" -type f >> "$lvl2name.txt" 

これは、スクリプトの後続の各実行の前に、既存の"$lvl2name.txt"ファイルを切り捨てるためにあなた次第です。あなたはあなたのディレクトリループの前にfind . -maxdepth 2 -type d ...に電話をかけてディレクトリ名などを取得することができます。

質問がありましたら教えてください。

関連する問題