[問題] 利用 Script 批次選取檔案?

看板Linux作者 (ABBBB ABBAAA)時間15年前 (2010/03/29 17:30), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/2 (看更多)
我現在手上有一群檔案,檔名從 Test0001.int 一直編到 Test0540.int 也就是一共 540 個序列檔案 而這 540 個檔案中每 9 個構成一組, 因此,如果我想要挑每一組的第一個檔案分析, 我就必須從這裡面選取 Test0001.int Test0010.int Test0019.int Test0028.int Test0037.int Test0046.int Test0055.int ... 也就是取出編號 Mod 9 = 1 的所有檔案 如何利用 bash script, 把特定的檔案 (say, mod 9 = 1) 複製到給定子目錄 (say, 1mod9) 之下呢? ------------ 基本的想法 mod9.sh #!/bin/bash K = $1 # 如果 ../$1.."mod9" 這個子目錄不存在的話建立 while [如果找得到 "Test"..$K..".int" 這個檔案] # 這很麻煩,K我必須把不滿四位數的前面填零 # Bash Script 下,字串可以這樣直接串嗎? do cp "Test"..$K..".int" ../$1.."mod9" # 相對目錄我也不知道要怎麼表達 Orz K = $K + 9 done ------------- $1 相當於 c++ 的 argv[1],所以我只要打 ./mod9.sh 1 就能把當前目錄下的那些檔案都複製一份到指定目錄...... 希望 0.0" 感覺是可行,不過這些指令上的細節不知道該怎麼寫 我幾乎沒自己寫過 bash script, 平常頂多是拿別人寫好現成的改一改 有請各位協助,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.102.142 ※ 編輯: TacoEater 來自: 140.112.102.142 (03/29 17:30)

03/29 17:57, , 1F
seq -f "Test%04g" 1 9 100
03/29 17:57, 1F

03/29 18:02, , 2F
把檔名輸出成字串後,整批cp到新目錄就好
03/29 18:02, 2F

03/29 18:02, , 3F
或是你堅持要用mod的話,試試expr
03/29 18:02, 3F

03/29 18:03, , 4F
總之shell script偏向於字串的操作,寫數學相關的不妨用C
03/29 18:03, 4F

03/29 21:23, , 5F
用一個變數下去 iterate,使用 $(( )) 語法支援 + 和 %
03/29 21:23, 5F
文章代碼(AID): #1Bi7CxAn (Linux)
文章代碼(AID): #1Bi7CxAn (Linux)