こんにちは。私は、次の転送されたファイルを受け取る入力というFTPフォルダを持っています。
"Guide to Iceland _ Chen-ping Wang itinerary T-987654987.pdf"
"Guide to Iceland _ T-123654875 Chen-ping Wang itinerary.pdf"
デフォルトでは、ファイルの説明はさまざまですが、常に「T-」といくつかの数字が含まれています。
ファイルを../Outputフォルダにコピーし、「T-」と数字が最初に表示され、残りのファイル名が表示されるようにファイル名を変更するbashスクリプトを作成する必要があります。例:"T-123654875 - Guide to Iceland _ Chen-ping Wang itinerary.pdf"
正確な名前を得るためにGrepを使用します。検索(.+)(T-\d+)
して次に置き換える$2 - $1
しかし、正しく動作させることはできません。
答え1
grep
単独で交換することは私に利用可能な組み合わせのようには見えません。これについてどう思いますかsed
?
$ ls *pdf
Guide to Iceland _ Chen-ping Wang itinerary T-987654987.pdf
Guide to Iceland _ T-123654875 Chen-ping Wang itinerary.pdf
その後、いくつかのforループがありますbash
。
$ for i in *pdf; do mv "$i" "$( echo $i | sed -r 's/^(.*)(T-[0-9]{9})(.+)$/\2 - \1\3/' )"; done
これは現在のディレクトリのすべてのPDFを繰り返し、名前を保存し$i
、sedを介してコンテンツをエコーします(そしてその出力をターゲットとして使用mv
)。sed
ファイル名を3つの部分に分けて並べ替えます。テストのmv
ために交換することをお勧めしますecho mv
:)
これは私たちに以下を提供します。
$ ls *pdf
T-123654875 - Guide to Iceland _ Chen-ping Wang itinerary.pdf
T-987654987 - Guide to Iceland _ Chen-ping Wang itinerary .pdf