我試圖去除所有「?」在給定目錄中的文件名中有更多的子目錄,並且它們中有子目錄。我嘗試過使用一個簡單的perl正則表達式腳本與系統調用,但它無法遞歸到每個子目錄,手動將浪費太多時間。我如何解決我的問題?基於正則表達式遞歸地重命名目錄和文件
回答
您可以使用查找命令以「?」搜索文件名。然後使用其exec參數運行腳本,該腳本將刪除「?」來自文件名的字符。考慮以下腳本,它可以爲您節省到/usr/local/bin/rename.sh
,例如(記得給它+ X許可):
#!/bin/sh
mv "$1" "$(echo $1| tr -d '?')"
那麼這將做的工作:
find -name "*\?*" -exec rename.sh {} \;
試試這個:
find -name '*\?*' -exec prename 's/\?//g' {} +
https://metacpan.org/module/RMBARKER/File-Rename-0.06/rename.PL參見(這是在Ubuntu發行版的默認rename
命令)
您的回答無效。 – 2013-02-27 22:33:40
你的錯誤是什麼?你見過我的鏈接嗎?如果它是「找不到命令」,那麼你應該考慮安裝'prename' – 2013-02-27 22:36:47
沒有錯誤(即程序返回0)。它只是沒有「行動」(做任何事情)。 – 2013-02-27 22:52:10
用'?'查找所有名字並刪除所有這些。也許可以使用-exec選項,但需要額外的腳本
for f in $(find $dir -name "*?*" -a -type f) ; do
mv $f ${f/?/}
done
- 1. 遞歸地重命名目錄名稱
- 2. 基於長度遞歸地重命名文件夾
- 3. 用於目錄中的文件名的正則表達式
- 4. 使用批處理和正則表達式重命名文件
- 5. 使用正則表達式遞歸地匹配點文件
- 6. SVN使用正則表達式重命名目錄中的所有文件
- 7. Perl:遞歸重命名所有文件和目錄
- 8. 正則表達式重寫文件名
- 9. 重命名文件名以正則表達式
- 10. 如何使用Python /正則表達式在目錄中遞歸地查找特定的子文件夾名稱?
- 11. 基於正則表達式
- 12. 基於正則表達式
- 13. 重命名目錄的遞歸在Python
- 14. 從基於Java正則表達式的文件名提取值
- 15. 在.NET中使用正則表達式重命名文件?
- 16. 使用正則表達式重命名文件
- 17. 使用python重命名文件 - 正則表達式
- 18. 批量重命名文件與正則表達式
- 19. 在Mac上批量重命名文件正則表達式
- 20. 如何用正則表達式重命名批量文件?
- 21. 在C中重命名文件所需的正則表達式#
- 22. 一些簡單的重命名文件的正則表達式
- 23. 正則表達式url基於文件夾重寫
- 24. 遞歸查找目錄基於模式
- 25. 通過目錄遞歸併根據父目錄重命名/附加文件名
- 26. 正則表達式的遞歸「維基式」列出
- 27. 正則表達式基於條件
- 28. 如何Perl遞歸正則表達式
- 29. JavaScript中的遞歸正則表達式
- 30. Ruby中的遞歸正則表達式
這個Perl代碼在哪裏?告訴我們...... – 2013-02-27 22:21:10
它只是分析「ls -R | grep'?'的輸出」,將文件名正則表達併發出系統調用來重命名它們。它不工作得很好,我發現使用「查找」和「重命名」你可以很容易地做到這一點,但我無法理解這兩個令人頭疼的文檔。 – 2013-02-27 22:26:36