[問題] 請問在目錄下修改所有子目錄檔案的檔名?

看板Linux作者 (浮塵一世 笑 滄海)時間12年前 (2012/02/12 20:46), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/1
請問下什麼指令 才可以在目錄下修改所有子目錄檔案的檔名 我把檔名沒注意 多打空白 一直想不到要用什麼 可以把所有檔案檔名的空白消掉 或空白改 _ 因為下一步是想把所有檔案中的字串 用grep 某字取代某字 但是grep對檔名中有空白的 完全沒輒... 它就不執行 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.48.240

02/12 20:55, , 1F
是不是要加跳脫字元'\'
02/12 20:55, 1F

02/12 21:25, , 2F
for f in *; do mv "$f" "${f// /_}"; done
02/12 21:25, 2F

02/12 21:26, , 3F
檔案太多的話,用rename or rename.ul比較快
02/12 21:26, 3F

02/13 12:05, , 4F
我試過了 只能在目標目錄下改檔名 目標目錄下的眾多子目錄
02/13 12:05, 4F

02/13 12:06, , 5F
的檔案的檔名就還是不動... 試一試好像grep可以全改 但是
02/13 12:06, 5F

02/13 12:08, , 6F
它不吃有空白字元的檔名... 子目錄有數百個 裡面檔案上千~
02/13 12:08, 6F

02/13 12:11, , 7F
還是bash: set -s globstar; for f in **; do ....
02/13 12:11, 7F

02/13 12:23, , 8F
重新看了一次你的問題,應該是呼叫grep的script沒寫好
02/13 12:23, 8F

02/13 12:26, , 9F
如果是用find | xargs 的話,改成 find -print0|xargs -0 看看
02/13 12:26, 9F

02/13 12:54, , 10F
參考這一篇: #1EuUGZCG
02/13 12:54, 10F

02/13 13:05, , 11F
可以了 3Q
02/13 13:05, 11F

02/13 13:09, , 12F
在find | xargs rename的語法裡加-print0 -0就可以了
02/13 13:09, 12F
文章代碼(AID): #1FDxIHHJ (Linux)