我有一個目錄,其中填充了由用戶上傳的PDFS,並且沒有意識到需要遵循某些命名約定來獲取文件可以再次下載。要解決這個問題,我需要運行一個bash腳本或命令,它會遞歸地遍歷子目錄,並刪除壞字符並重命名文件。BASH Linux - 如何通過echo將查找結果傳遞到mv目標
我以爲我已經想通了,但唉,我被困在一個部分。一旦我運行我的命令(見下文),我會得到一系列錯誤,顯示它找到這些文件,但移動的參數列表(目標)沒有被正確設置。如何將文件名傳遞給子命令?
find . -name '*.pdf' -or -name '*.PDF' -execdir mv -v '{}' `echo {} | tr ' ' '_' | tr -d '[{}(),\!]' | tr -d "\'" | tr '[A-Z]' '[a-z]' | sed 's/_-_/_/g'`\;
我知道我的問題是echo {}的事情,但我不知道如何獲取find中找到的文件名。第一個替代作品,回聲一個沒有。
在此先感謝!
由於在反引號內的位被評估並且代替到命令行中,所以'find'甚至開始之前失敗。你可能想看看「重命名」,而不是... – twalberg 2015-04-03 19:32:50