看板 Linux 關於我們 聯絡資訊
我現在手上有一群檔案,檔名從 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)
chroot:seq -f "Test%04g" 1 9 100 03/29 17:57
chroot:把檔名輸出成字串後,整批cp到新目錄就好 03/29 18:02
chroot:或是你堅持要用mod的話,試試expr 03/29 18:02
chroot:總之shell script偏向於字串的操作,寫數學相關的不妨用C 03/29 18:03
DBoyX:用一個變數下去 iterate,使用 $(( )) 語法支援 + 和 % 03/29 21:23