すべてのファイルで改行文字(^ M)を置き換えてから、文字列に基づいてファイルの名前を変更します。

すべてのファイルで改行文字(^ M)を置き換えてから、文字列に基づいてファイルの名前を変更します。

私はUNIXマニアではありませんが、ここで小さなスクリプトを書くのに十分なUNIXを理解しています。ただし、この部分は個人的に時間を十分に費やすことができない場合があります。

私のディレクトリには約2000個のファイルがあり、次のことを行う必要があります。

  1. ファイルごとに約3000のレコードがありますが、すべてのレコードはCtrl Mの改行で区切られ、ファイルごとに1行になります。これらは分離する必要があります。
  2. 各ファイルには、最初の行の文字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

おすすめ記事