現在のディレクトリ内のすべてのtxtファイルを取得するシェルスクリプトが必要で、ファイルごとに空のファイルか、それは(私はwcコマンドで行うことができると信じています)。unixファイルの最後の行の最初の文字をファイル名に置き換えるには
それが空の場合、ファイルの最後の行は次のようになりますここで私たちの状態で、このディレクトリ内のすべてのtxtファイルが空であるか、膨大なデータが含まれていますいずれかのため、その後、他のそれを無視:
Z|11|21||||||||||
最後の行には、文字Z
があり、次に|
、次にan integer
、次に|
、次にan integer
、ある数字の|
があります。
ファイルが空でない場合は、この形式になっていると見なします。最後の行の前のデータは文字化けしており、必要ではありませんが、最後の行の前に少なくとも1行あります。つまり、ファイルが空でない場合は少なくとも2行は保証されます。
ファイルが空でない場合、ファイルを受け取り、最後の行の 'Z'を 'filename.txt'に置き換えて、新しいデータをtempfileという別のファイルに書き込みます。したがって、最後の行は次のようになります。
filename.txt|11|21|||||||
残りの行は同じです。一時ファイルから最後の行、すなわちfilename.txt|int|int|||||
が取り出され、最終ファイルにマージされます。 tempfileの内容は、同じディレクトリ内の次のfilename.txtからデータを受け取るようにクリアされます。 finalfileには、そのディレクトリ内の空でないすべてのtxtファイルの最後の行の編集されたバージョンがあります。
例:FILE1.TXTが
....
....
....
Z|1|1|||||
などのデータを持っており、FILE2.TXTは、スクリプトを実行した後
....
....
....
Z|2|34|||||
などのデータを持っている、FILE1.TXTの新しいデータが
.....
.....
.....
file1.txt|1|1||||||
になります
これは最初は空のtemp.txtという新しいファイルに書き込まれます。そこから最後の行がファイルfinal.txtにマージされます。だから、final.txt内のデータは次のとおりです。このマージした後、TEMP.TXT内のデータはFILE2.TXTの
新しいデータをクリア。これは、に書き込まれます
...
...
...
file2.txt|2|34||||||
なっている
file1.txt|1|1||||||
同じファイルtemp.txt。そこから最後の行が同じファイルfinal.txtにマージされます。
ので、final.txt内のデータはタイプTXTと非空のと同じディレクトリ内にあることが返されたファイルのN番号、最終的にデータを検討した後
file1.txt|1|1||||||
file2.txt|2|34||||||
です。TXTは、いくつかの条件については
file1.txt|1|1||||||
file2.txt|2|34||||||
file3.txt|8|3||||||
.......
.......
.......
fileN.txt|22|3|||||
になり、私はすでにコマンドを知って、text型のディレクトリ内のファイルを見つけるための
、最後の行を取り、にそれをマージする
find <directory> -type f -name "*.txt"
のような別のファイル
tail -1 file.txt>>destination.txt
誰かが自分の仕事をするように頼んでいるように聞こえます。もしそうなら、あなたは解決策にどれだけお金を払うでしょうか?そうでない場合は、下記のいくつかの基本的なbashコードです。 'findのファイル名は –