2017-07-07 237 views
-3

我想通過使用文件夾名來重命名文件。將文件夾名重命名爲帶有bash的文件名

此:

├── foo01 
│   └── bar.png 
│   └── bar.txt 
├── foo02 
│   └── bar.png 
│   └── bar.txt 
└── foo03 
    └── bar.png 
   └── bar.txt 

應該是這樣的:

├── foo01 
│   └── foo01.png 
│   └── foo01.txt 
├── foo02 
│   └── foo02.png 
│   └── foo02.txt 
└── foo03 
    └── foo03.png 
   └── foo03.txt 

我無法找到一個方法來做到這一點。任何人都可以幫忙嗎?

+1

到目前爲止您嘗試了什麼?請參閱此批量重命名:https://stackoverflow.com/questions/8416990/shell-bash-shortcut-for-bulk-renaming-of-files-in-a-folder – Lovy

+0

請顯示您的代碼。由於Stack Overflow隱藏了你的密切原因:*尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現它的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建一個最小化,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。* – jww

回答

1

隨着Perl的的獨立的重命名命令:

rename -n 's|([^/]*)/[^/]*\.(.*)$|$1/$1.$2|' */* 

輸出:

 
foo01/bar.png renamed as foo01/foo01.png 
foo01/bar.txt renamed as foo01/foo01.txt 
foo02/bar.png renamed as foo02/foo02.png 
foo02/bar.txt renamed as foo02/foo02.txt 
foo03/bar.png renamed as foo03/foo03.png 
foo03/bar.txt renamed as foo03/foo03.txt 

如果一切正常,刪除選項-n

+0

你可以解釋你的正則表達式魔法... – Robert

+0

我用's | regex | string | '將路徑和文件名的元素轉換爲新字符串。該語法與'sed''s's'命令非常相似。 – Cyrus

+0

謝謝,這有幫助。我必須使用相同的語法來重命名(而不是預先命名),並且一切正常。 200個文件被重命名:) – SillyWalker