如何使用 mv 指令處理多個檔案 - Linux

Table of Contents

OS: WIN_10_x64
SHELL : Cmder

最近想學習使用 CLI 來取代 GUI
但是發現 mv 這個指令並沒有辦法使用 Regex 只能夠使用 wildcard match.
不過呢 wildcard 好像只能夠使用於 '不含有空白字元的檔案'

mv -v foo_bar*.tar D:\

可以成功執行

但倘若 foo_bar 之間的定界符號是'空格'的話

mv -v "foo bar*.tar" D:\

就會回傳

mv: cannot stat 'foo bar*.tar': No such file or directory

我還上網查詢了一些資料
嘗試了以下等效的指令 但仍然都是失敗告終

mv -v "{foo bar}*.tar" D:\

mv -v "${foo bar}*.tar" D:\

mv -v -t D:\D\ `ls | grep -i -- "foo bar.*tar"
我知道解析 ls 不是一個好方法,但我還是想試試看能不能成功...



網路上查到的方法還有使用

find -exec

跟用 sh 的 for 疊代檔案名稱進去給 mv



但仍然想以比較直觀的方式來達成同樣的事情
想請問版上的高手能否解決這個問題
或者 ~ 有更簡單的方法或指令可以使用 !?


先在此謝謝各位回答的人
--

All Comments

Steve avatarSteve2017-11-18
空格要用 \
Dinah avatarDinah2017-11-19
Wiki:跳脫字元
Erin avatarErin2017-11-22
感謝回答 我知道跳脫字元 但是是放在 雙引號 裡面嗎?
Quintina avatarQuintina2017-11-25
一樣是回傳錯誤 mv -v "foo\sbar*.tar" D:\D 一樣是錯誤
Kelly avatarKelly2017-11-30
*在雙引號內就失去wildcard的作用了
Harry avatarHarry2017-12-01
你可以試 "foo bar"*.tar 或是foo\ bar*.tar
Agatha avatarAgatha2017-12-03
回 ckclark 大大 一樣是報錯 是說 mv 這個指令沒有完備性
Kyle avatarKyle2017-12-04
\ ,\s 這兩者都無法在雙括號內辨識成空格
Thomas avatarThomas2017-12-08
在 windows 裡反斜線不是目錄嗎?不知道 cmder 怎麼作
Hazel avatarHazel2017-12-12
至少第一種可以 https://i.imgur.com/Lengp3O.png
Andrew avatarAndrew2017-12-16
Windows Subsystem for Linux?
Franklin avatarFranklin2017-12-17
回 ckclark 大大, 抱歉! 我因為副檔名打錯 導致你說的方法
都回報錯誤 經過測試是可以的 ! 感謝您 !
Oliver avatarOliver2017-12-20
回 bitlife 我是使用 WIN_10 然後終端用 cmder !
正確指令: "foo bar"*.tar
Steve avatarSteve2017-12-23
windows 推廌cygwin
Dora avatarDora2017-12-26
cmder可以包cygwin terminal, https://tinyurl.com/zzvs6sk
Belly avatarBelly2017-12-29
cygwin下打 mv -v foo_bar*.tar /cygdrive/D/