我有所謂的「圖像」我的桌面上的文件夾,該文件夾內有3張圖片...如何在Mac OSX重命名使用巖組外殼和`sed`命令文件
File-A-B.gif
File-C-D.gif
File-E-F.gif
...我想要重命名命令行中的文件,以便刪除第二個連字符/短劃線。因此,其結果將是文件命名,像這樣......
File-AB.gif
File-CD.gif
File-EF.gif
...我用命令的組合,通過管道輸送到對方,但在讓他們的工作沒有多少運氣。
起初我ls File-* | sed 's/\(File-[^-]\)-\(.+\)/mv & \1\2/' | sh
此命令的擊穿是...
- 名單的是開始
File-
- 管的結果通過對
sed
- 我們」的任何文件將使用
sed
捕捉名 - 不同地區看第一個文件,我們會捕捉到
File-A
和B.gif
- 與
sed
我們再一招命令替換匹配的文件名,並有效地告訴它的原始文件重命名爲彌補數據的兩件的文件,我們已經捕獲 - 我們就通過管道該命令通過到
sh
我得到的初始錯誤是一個權限錯誤。我不確定爲什麼我有'讀寫'權限訪問這些文件。
若要解決此我chmod 777
每個文件。
這就產生了一個新的錯誤這是cannot execute binary file
。
要解決這個錯誤我看到這個帖子:http://blog.mpdaugherty.com/2010/05/27/difference-with-sed-in-place-editing-on-mac-os-x-vs-linux/這表明增加一對額外的單引號。這部作品的原因(顯然)是因爲sed
將錯誤,因爲它不知道是幹什麼用的文件擴展名,而是把一個空字符串中和的錯誤(在一個側面說明:我的理解是,你還需要使用-i
標誌 - 我沒有使用 - 但這樣做導致了一個不同的錯誤,所以我廢除了,只是用單引號來避免我得到的二進制文件錯誤)。
所以現在我有ls File-* | sed '' 's/\(File-[^-]\)-\(.+\)/mv & \1\2/' | sh
但隨着No such file or directory
這樣的錯誤?
我想是明確與文件的位置,因此,例如...
ls File-* | sed '' 's/\(File-[^-]\)-\(.+\)/mv ~\/Desktop\/Images\/& ~/Desktop\/Images\/\1\2/' | sh
...通知我不得不逃離斜線~\/Desktop\/Images\/
但是這仍然沒有工作。
我也安裝使用自制的sed
GNU版本,但它也有gsed: can't read s/\(Vim-[^-]\)-\(.+\)/mv & \1\2/: No such file or directory
差錯以類似的方式我有點茫然與我怎麼能得到這個工作。
我不想訴諸寫一個bash/zsh腳本或Ruby腳本。
任何幫助,你可以給我將不勝感激。
謝謝!看起來你提到的第一個選項適用於我,但它確實在輸出中產生了一個錯誤(即使它正確地重命名了這些文件)? 錯誤是'preexec:4:command not found:^ A^B'你知道這意味着什麼嗎?注意,你說的最後一個例子是我幾乎有的,沒有奏效。 但我明白爲什麼第一個版本能夠工作(我認爲),我們使用'echo'和'$()'組合插入其他命令。我不是100%確定'$()'通常用於什麼? 你能否給你的答案增加額外的解釋來幫助我(和其他人)更好地理解:) – Integralist
'$()'是過程替換。我想因爲我們不管怎樣管道到'sh',這不是必需的。見上面的編輯。 – devnull
這很有道理。謝謝! – Integralist