Bash没有列出所有带ls的文件

时间:2013-05-24 19:22:00

标签: linux bash shell

我有一个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时     文件夹= /家庭/文件夹/交易-2012 *     命令=“猫”     processVerification $ folder $ command

$ cat testFiles

我只有事务-2012-01-20.csv,我需要所有文件。

但我只需要2012年的交易,我创建processVerification,因为我需要传递50个不同的文件夹,命令是因为在某些文件夹中我有.csv而在其他文件夹中我有.csv.bz2而在其他文件夹中我有.csv 。广州

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

2 个答案:

答案 0 :(得分:4)

您编辑了自己的帖子,现在错误很有意义。当你像这样调用processVerification时:

processVerification /home/folder/transactions-2012*

将所有Transactions-2012 *文件传递给processVerification(),但在该函数中,您只查看第一个参数。试着这样看看所有的args:

processVerification(){
    ls "$@" > testFiles
}

答案 1 :(得分:0)

您可以使用ls -1并将其传递给grep

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

您的问题是您使用错误的参数调用processVerification。您应该这样做:

processVerification /home/folder/

processVerification /home/folder/transactions-2012*