我想單個文件prt-dealrpt
,將其分成多個文件,根據文件中的特定字符串重命名文件,並允許重複使用(1), (2)等文件名的末尾。使用字符串批量重命名多個文件並允許重複使用
這裏是文件的一部分:
Vendor: GREAT LAKES Buyer - Melissa APU/DND
Begin Date: 10/16/2017
End Date: 12/08/2017
Vendor: SENECA Buyer - Bill This is a note
Begin Date: 10/16/2017
End Date: 12/08/2017
Vendor: MC-CAIN Buyer - Bill APU/DND
Begin Date: 10/16/2017
End Date: 12/08/2017
Vendor: MC-CAIN Buyer - Ethan APU\DND
Begin Date: 10/16/2017
End Date: 12/08/2017
編輯:上述文件在同一行上的供應商名稱已更以下。大多數文件不會重命名,因爲它正在查找AUP/DND目錄。那些重命名的人實際上是重命名該行的最後一部分,因此在本例中,供應商SENECA
的新名稱將是This is a note.dat
我需要將文件在每次使用這個詞Vendor
我的分裂成功地這樣做了殼名爲split.sh
csplit --prefix page --suffix-format %02d.dat prt-dealrpt '/^Vendor/' '{*}'
這將創建文件名爲page00.dat
page001.dat
page02.dat
等。
接下來我試圖將文件重命名爲供應商名稱。我這樣做有一個批處理文件名爲fixname.bat
@echo off
for %%i in ("C:\Users\waker\Documents\Unipro\Vendor\*.dat") do (
for /f "tokens=2 delims=:" %%j in ('findstr /B "Vendor" "%%i"') do (
ren "%%i" "%%j.temp_dat"
)
)
ren *.temp_dat *.dat
這工作但它不允許重複。它將跳過將創建重複名稱的文件。使用上面的例子,我將留下GREAT LAKES.dat
SENECA.dat
MC-CAIN.dat
和page03.dat
。我想要重複命名爲MC-CAIN(2).dat
任何幫助將不勝感激,也如果有人有建議這樣做所有與一個按鈕,而不是運行兩個單獨的命令。
我正在運行Windows 10上安裝了「Windows上Ubuntu上的Bash」。
感謝您抽出寶貴的時間!我將它保存到fixname.sh中,並將其放在我的頁面* .dat文件所在的目錄中。當我嘗試從Bash運行它時,我得到 ./fixname.sh:第2行:語法錯誤附近的意外標記'$'\ r'' '/fixname.sh:第2行:'爲我在頁面*中。 DAT; – Bill
我認爲這是因爲Windows txt文件需要回車自動放置在文件中,如果你使用編輯器如記事本來創建它。你可能想嘗試像notepad ++這樣的編輯器來編輯bash腳本。 嘗試以下命令以從文件中除去回車符並創建fixname2.sh:'cat fixname.sh | sed的/ \ r $ //'> fixname2.sh' –
謝謝,刪除回車符合正常工作。腳本運行但出錯。看到上面的編輯,我沒有包含原始prt-dealrpt文件中的所有信息,我在上面添加了更多。 – Bill