我正在編寫一個處理20個文件的腳本。他們都位於不同的目錄中。我有部分文件名。cp和mv中的linux通配符使用
- 在日誌目錄中,File1_Date_time.err變化到File1__Date_time_orig.err
- CD ../scripts/
- SH File.sh
File1中目錄是/數據/ data1directory/Sample_File1 /日誌/ File1_Data_time.err
文件2目錄/data/data2directory/Sample_File2/logs/File2_Data_time.err
.....
我的腳本看起來像這樣。 (runrunrun.sh)
#!/bin/bash
INPUT=$1
mv /data/*/Sample_*/logs/*_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err
cp /data/*/Sample_*/scripts/*.sh /data/*/Sample_*/scripts/*_orig.sh
sh /data/*/Sample_*/scripts/*_orig.sh
運行它時,我試了一下。
./runrunrun.sh File1
。 runrunrun.sh文件1
SH runrunrun.sh文件1
MV:不能移動/data/data1directory/Sample_File1/logs/File1_Data_time.err /data/*/Sample_*/logs/*_Data_time_orig.err
:沒有這樣的文件或目錄 CP也得到了類似的反饋
我這樣做是正確的嗎?
謝謝!
'mv','cp'等。 **沒有通過你正在寫的通配符**,如果這些通配符h任何有效的擴展。相反,他們傳遞通過運行這些擴展創建的文字文件名。因此,由於他們不知道輸入名稱中使用的文字通配符,因此他們不可能將輸入名稱中的「*」映射到輸出名稱中的「*」。 –
如果你想編寫重命名工具,一個好的開始是BashFAQ#30:http://mywiki.wooledge.org/BashFAQ/030 –
相關:http://stackoverflow.com/questions/20629302/better-way - 重命名文件基於多模式/ 25597051 –