0

私はbashコードを持っていて、パスのファイルをリストしてファイルに保存する必要があります

processVerification(){
    ls $1 > testFiles
}

フォルダにはファイルがあります

transaction-2012-01-20.csv
transaction-2012-01-21.csv
transaction-2012-01-22.csv
transaction-2012-01-23.csv
transaction-2012-01-24.csv
transaction-2013-01-24.csv
transaction-2013-02-24.csv

processVerification folder=/home/folder/transactions-2012* command="cat" processVerification $folder $command を呼び出すと、

$ cat testFiles

私は transaction-2012-01-20.csv しか持っておらず、すべてのファイルが必要です。

しかし、2012年のトランザクションのみが必要であり、50個の個別のフォルダーを渡す必要があるため、processVerificationを作成します。コマンドは、一部のフォルダーには.csvがあり、他のフォルダーには.csv.bz2があり、他のフォルダーには.csv.gzがあるためです

各フォルダ内のファイルは個別です

4

2 に答える 2

4

投稿を編集したので、エラーは理にかなっています。次のように processVerification を呼び出すと:

processVerification /home/folder/transactions-2012*

これにより、すべてのトランザクション 2012* ファイルが processVerification() に渡されますが、その関数では最初の引数のみが表示されます。代わりにこれを試して、すべての引数を確認してください。

processVerification(){
    ls "$@" > testFiles
}
于 2013-05-24T19:34:30.390 に答える
0

ls -1にパイプして使用できますgrep

processVerification() {
    ls -1 | grep 'transaction-2012' > testFiles
}

あなたの問題は、間違った引数で processVerification を呼び出していることです。あなたがしているはずです:

processVerification /home/folder/

いいえ:

processVerification /home/folder/transactions-2012*

于 2013-05-24T19:24:10.757 に答える