を指定します使用正規表現は、私は一部のカラムだけを必要とする多くのファイルとフォルダを持っている出力ファイル名
mkdir ./raw_data/selection
doit() {
csvfix read_dsv -f 1,3,7 -s \; $1 > $1 | sed 's/raw_data/raw_data\/selection/'
}
export -f doit
Files_To_Parse=`ls ./raw_data/*csv`
parallel doit ::: $Files_To_Parse
これは動作しません。
しかし、私の場合これに:
cd ./raw_data
doit() {
csvfix read_dsv -f 1,3,7 -s \; $1 > selection/$1
}
export -f doit
Files_To_Parse=`ls -1 *csv`
parallel doit ::: $Files_To_Parse
それは動作しますが、私はこのプロジェクトでトップフォルダからこれを実行できるようにしたいと思います(つまりbrief_csv.sh
とそれを呼び出すという名前のファイルにこれを入れて
あなたは "を持っていないということ誤植です最初の試行でlsコマンドの "-1"オプションを使用しますか?私はそれが必要であると期待します。あなたの主な問題は、これがBashの場合、 "$ 1> ./raw_data/selection/${1:9}"を試してみましたか?そうでなければ、おそらく "$ 1> $(echo $ 1 | sed '/ raw_data/raw_data \/selection /')"? – EdmCoff
'ls'はパイプへの書き込みを知り、' -1'動作を自動的に有効にします。このオプションは、インタアクティブセッションで出力がどのように見えるかを確認する場合にのみ必要です。 – tripleee
とにかく、scripsで 'ls'を使わないでください。 http://mywiki.wooledge.org/ParsingLsこれを行う正しい方法は単に 'parallel doit ::: * csv'です – tripleee