2011-10-30 12 views
2

私は、ファイルのリストをcronベースでコピーするスクリプトが必要です。名前/日時パターンで選択されたファイルとファイルの宛先の名前には、ddmmyyyのような追加データが必要です。 ファイルやディレクトリをコピーするのに問題はありませんが、データに応じて各ファイルの名前を変更するのに問題があります。いくつかのオープンソースのソリューションが存在する可能性がありますか?おかげさまで ファイルをコピーするLinuxのbashスクリプト

答えて

4

実用的なコードを提供するのに十分な情報が提供されていません。 30102011dated_log.log開始の最初の行と仮定して、

file=dated_log.log 
ddmmyyyy=$(read -r < "$file" ; echo "${REPLY:1:8}") 
cp "$file" "$file.$ddmmyyyy" 

上記data_log.log.30102011dated_log.logをコピーします。しかし、あなたはこのような何かを行うことができます。

Bash Reference Manualはあなたのニーズに合わせて上記を調整するのに役立ちます。

+0

'ddmmyyyy = $(read -r <" $ file "; echo" $ {REPLY:1:8} ")の代わりに-r -n 8 ddmmyyyy <" $ file "'を読むことができます。 –

+0

@gniourf_gniourf:はい、良い点です。しかし、OPのファイル形式*は実際には正確な8文字の正しい文字で始まることをむしろ疑うので、私の答えはより良いと思います。私が投稿したコードはどんな形式にも簡単に微調整されるでしょうOPが必要です。 (OPが実際に30から37の文字を必要とすると仮定します。読み込み-r -n 8 ddmmyyyでそれらを検索するにはどのように調整しますか?) – ruakh

+1

(文字30から37まで) 'read -r -n 37 ddmmyyyy <" $ file " ; ddmmyyyy = $ {ddmmyyyy:30} 'が行います。あるいは直接: 'read -r ddmmyyyy <" $ file "; ddmmyyyy = $ {ddmmyyyy:30:8} '。または 'read -r ddmmyyyy; '' $ {ddmmyyyy:30} ''または...目標はちょうどサブシェルを避けることです(私は個人的には' $(... echo) 'と呼ばれます)。 ) '。 –

関連する問題