利用 Script 批次選取檔案? - Linux

Table of Contents

我現在手上有一群檔案,檔名從 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, 平常頂多是拿別人寫好現成的改一改
有請各位協助,謝謝

--

All Comments

Hedda avatarHedda2010-04-02
seq -f "Test%04g" 1 9 100
Zenobia avatarZenobia2010-04-02
把檔名輸出成字串後,整批cp到新目錄就好
或是你堅持要用mod的話,試試expr
Eartha avatarEartha2010-04-04
總之shell script偏向於字串的操作,寫數學相關的不妨用C
Rachel avatarRachel2010-04-05
用一個變數下去 iterate,使用 $(( )) 語法支援 + 和 %