Bash
使用萬用字元移動文件?
哦,我已經閱讀了幾頁和問題,但我無法理解/完全理解它……
jdir0="$@" # /home/tor/subbackup/teest2/jjj mv "$jdir0/subs/*.srt" /home/tor/subbackup/
mv: cannot stat ‘/home/tor/subbackup/teest2/jjj/.srt’: 沒有這樣的文件或目錄*
嗯,呃,是的,那裡有一個 test2.srt ..
我看過幾頁有很多不同的解決方案,據我所知,這應該翻譯成(第一個移動命令):
mv /home/tor/subbackup/teest2/jjj/subs/test2.srt /home/tor/subbackup/
這個在終端上工作正常..
(第一個移動命令),但我無法讓它在腳本中工作..我做錯了什麼?
jdir0="$@"
"$@"
擴展到腳本的所有位置參數/參數。當您將其分配給單個變數時,Bash 將它們與空格連接起來。你可能只想在$1
這裡。mv "$jdir0/subs/*.srt"
確實應該引用變數擴展,因為它可以防止分詞,並且如果變數包含看起來像 glob 的東西,則進行通配。但是在這裡,您可能希望硬編碼的 glob 能夠工作,因此不應引用它。
所以把星號放在引號外面,例如
mv "$jdir0"/subs/*.srt
或者例如
mv "$jdir0/subs/"*.srt
兩者的工作方式相同,請使用對您來說更好的變體。