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 年的交易,我创建了 processVerification,因为我需要传递 50 个不同的文件夹,而命令是因为在某些文件夹中我有 .csv,而在其他文件夹中我有 .csv.bz2,而在其他文件夹中我有 .csv.gz

并且每个文件夹中的文件都是不同的

4

2 回答 2

4

你编辑了你的帖子,现在这个错误是有道理的。当您像这样调用 processVerification 时:

processVerification /home/folder/transactions-2012*

这会将所有 transactions-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 回答