Unixコマンドでファイルにテキストを入れる

Unixコマンドでファイルにテキストを入れる

Unixのシェルでtcshフォルダ名と検索したファイルの数を印刷し、それをファイルに提供したいと思います。

しかし、ちょうどフォルダ名を追加する方法がわからず、数を見つけてファイルに書き込むことができました。

my_folder.txt次のディレクトリ名のリストが含まれています。

dir_1
dir_2
dir_3
foreach a (`cat my_folder.txt`)
find ./netlists/spice/${a}.sp -newermt '8/16/2022 0:00:00' | wc -l  >check_latest.txt
end

上記のコードはファイルの数だけを出力します。たとえば、次のようになります。

10
5
4

しかし、私は次のようなものを印刷したいと思います。

dir_1   10
dir_2   5
dir_3   4

これを達成する方法がわかりますか?

答え1

私はあなたが何をしているのか完全にはわかりませんが、おそらくあなたが望むものは次のとおりです。

foreach a (`cat my_folder.txt`) echo "$a " $(find ./netlists/spice/${a}.sp -newermt '8/16/2022 0:00:00' | wc -l)  >check_latest.txt; end

個人的には、読みやすくするために複数行に分割します。

foreach a (`cat my_folder.txt`)
do
  count=$(find ./netlists/spice/${a}.sp -newermt '8/16/2022 0:00:00' | wc -l)
  echo "$a $count"
done >check_latest.txt

答え2

tcshで行う方法は次のとおりです。

foreach a (`cat my_folder.txt`)
  set count=`find ./netlists/spice/${a}.sp -newermt '8/16/2022 0:00:00' | wc -l`
  echo "$a $count"
end

リダイレクトで何をしたいのかわかりません。結果をファイルで終了するには、ループの終わりにリダイレクトする必要があります。

foreach a (`cat my_folder.txt`)
  set count=`find ./netlists/spice/${a}.sp -newermt '8/16/2022 0:00:00' | wc -l`
  echo "$a $count"
end > check_latest.txt

答え3

#!/usr/bin/python
import os
m=open('/home/praveen/folder.txt','r')
for i in m:
    ko=os.listdir(i.strip())
    co_file=len(ko)
    print "{0} {1}".format(i.strip(),co_file)

関連情報