2017-05-22 3 views
0

メインディレクトリ内に複数のサブディレクトリがあります。私は各サブディレクトリに行き、テキストファイルをリストし、サブディレクトリの名前を出力に渡したいと思います。各サブディレクトリに移動してファイルを一覧表示し、ディレクトリ名を出力に与える方法

for d in /home/*/;do 
cd $d 
ls *.txt > dir_*_all_txt.list 
done 

私は、サブディレクトリの名前でdir_*を交換したいです。

答えて

0

あなたにすべてを削除するにはbashの中から(Parameter Expansionを参照するか、単にbash manページ内の文字列##を検索)文字列を操作し、最後のスラッシュを含むことができます:あなたに、そう

pax> for i in $HOME/tmp* ; do echo $i ${i##*/} ; done 
/home/pax/tmp tmp 
/home/pax/tmp1 tmp1 
/home/pax/tmp2 tmp2 
/home/pax/tmp3 tmp3 
/home/pax/tmp4 tmp4 
/home/pax/tmp5 tmp5 

場合、それはの線に沿って次のようになります。私は現在、あなたが検討しているディレクトリ内のディレクトリとファイルを区別しませんあなたのコードを言及する必要がありますが

for d in /home/* ;do 
    cd $d 
    ls *.txt > ${d##*/}_all_txt.list 
done 

- あなたはを使用することもできますは、ディレクトリのみを検索する、または単純なif [[ -d ${d} ]]とループの内側にそれを確認する:

for d in /home/* ; do 
    if [[ -d "${d}" ]] ; then 
     cd $d 
     ls *.txt > "${d##*/}_all_txt.list" 
    fi 
done 
+0

ありがとうございました。 – Bala

関連する問題