
私はUNIXマニアではありませんが、ここで小さなスクリプトを書くのに十分なUNIXを理解しています。ただし、この部分は個人的に時間を十分に費やすことができない場合があります。
私のディレクトリには約2000個のファイルがあり、次のことを行う必要があります。
- ファイルごとに約3000のレコードがありますが、すべてのレコードはCtrl Mの改行で区切られ、ファイルごとに1行になります。これらは分離する必要があります。
- 各ファイルには、最初の行の文字8〜14から始まる対応する作成日があります。この日付を使用して、ファイル名をXXX_YYYYMMDD_AAA.txtに変更する必要があります。
答え1
dos2unix
ほとんどのシステムには、このタスクを実行するために必要なファイルを処理するためにスクリプトで「gin up」できる「gin up」というツールが含まれています。
ファイルがすべてディレクトリにある場合は、次find
のようにファイルを検索し、各ファイルに対して個別に作業できます。
$ find . -type f -exec dos2unix {} +
はい
このディレクトリ構造があるとしましょう。
$ tree
.
|-- afile
|-- dir1
| `-- afile
`-- dir2
`-- afile
私達は私達のfind
技術を使用してすべてのファイルがCRLF行終端を持つ「DOS」ファイルであることを確認できます。
$ find . -type f -exec file {} +
./dir2/afile: ASCII text, with CRLF line terminators
./afile: ASCII text, with CRLF line terminators
./dir1/afile: ASCII text, with CRLF line terminators
次のようにすべてを修正します。
$ find . -type f -exec dos2unix {} +
dos2unix: converting file ./dir2/afile to Unix format ...
dos2unix: converting file ./afile to Unix format ...
dos2unix: converting file ./dir1/afile to Unix format ...
Unixファイルのみを作成:
$ find . -type f -exec file {} +
./dir2/afile: ASCII text
./afile: ASCII text
./dir1/afile: ASCII text