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)