Bash unix shell脚本-在if条件下使用mv命令

Bash unix shell脚本-在if条件下使用mv命令,bash,unix,Bash,Unix,我想根据文件扩展名将文件移动到文件夹中。 示例:如果文件为.csv,则应移动到“已完成”文件夹,如果文件具有任何扩展名(其他任何.csv),则应移动到“常规”文件夹 下面是我的shell脚本,它不工作。你能告诉我它有什么问题吗 #!/bin/bash cd /apps/int/apd/$1/work if ls /apps/int/apd/$1/work/*.csv &> /dev/null; then mv *.csv /apps/int/apd/$1/COMPLETE

我想根据文件扩展名将文件移动到文件夹中。 示例:如果文件为.csv,则应移动到“已完成”文件夹,如果文件具有任何扩展名(其他任何.csv),则应移动到“常规”文件夹

下面是我的shell脚本,它不工作。你能告诉我它有什么问题吗

#!/bin/bash
cd /apps/int/apd/$1/work

if ls /apps/int/apd/$1/work/*.csv &> /dev/null; then
    mv *.csv /apps/int/apd/$1/COMPLETED
else
    /apps/int/apd/$1/Regular
fi

为什么必须检查
*.csv
文件的存在

#!/bin/bash
cd /apps/int/apd/$1/work

mv *.csv /apps/int/apd/$1/COMPLETED 2>/dev/null
mv * /apps/int/apd/$1/Regular
这里首先将
.csv
文件移动到
COMPLETED
文件夹。然后将其余文件移动到
Regular
文件夹中


我假设您已经创建了
已完成的
常规的
文件夹。

为什么要检查
*.csv
文件的存在

#!/bin/bash
cd /apps/int/apd/$1/work

mv *.csv /apps/int/apd/$1/COMPLETED 2>/dev/null
mv * /apps/int/apd/$1/Regular
这里首先将
.csv
文件移动到
COMPLETED
文件夹。然后将其余文件移动到
Regular
文件夹中


我假设您已经创建了
COMPLETED
Regular
文件夹。

使用您的特定路径以及/COMPLETED/和/Regular/的路径更改您的路径

如果我得到了你想要解释的,我想你的变量看起来像theese:

/YOUR_PATH/ = /apps/int/apd/$1/work
/COMPLETED/ = /apps/int/apd/$1/COMPLETED
/REGULAR/ = /apps/int/apd/$1/Regular    
你可以试试这个。:)


如果您需要什么,请留下评论。:)

使用您的特定路径以及/COMPLETED/和/REGULAR/的路径更改您的路径

如果我得到了你想要解释的,我想你的变量看起来像theese:

/YOUR_PATH/ = /apps/int/apd/$1/work
/COMPLETED/ = /apps/int/apd/$1/COMPLETED
/REGULAR/ = /apps/int/apd/$1/Regular    
你可以试试这个。:)


如果您需要什么,请留下评论。:)

在调用
mv
之前检查csv文件允许您区分两种可能失败的方式
mv
:无法移动字面上名为“*.csv”的文件和无法移动实际的csv文件。但是根据要求,我看到的是任何扩展名为
的文件都应该被移动。因此,即使文件名字面上是“*.csv”,我想也应该移动它。不过,最有可能的是,没有名为
*.csv
的文件,但这是shell传递给
mv
的名称,这将导致
mv
失败。由于您将错误消息静音以避免看到,因此您将不知道
mv
是否存在其他问题,例如目录
COMPLETED
不存在。最好测试您可以预测的错误条件,并显示您无法预测的错误的消息。一个可能的结果是,第一个
mv
失败,然后所有文件都被移动到
常规
。在调用
mv
之前检查csv文件,允许您区分两种可能的失败方式
mv
无法移动字面上命名为“*.csv”的文件,而且不能移动实际的csv文件。但是根据要求,我看到任何扩展名为
.csv
的文件都应该被移动。因此,即使文件名字面上是“*.csv”,我想也应该移动它。不过,最有可能的是,没有名为
*.csv
的文件,但这是shell传递给
mv
的名称,这将导致
mv
失败。由于您将错误消息静音以避免看到,因此您将不知道
mv
是否存在其他问题,例如目录
COMPLETED
不存在。最好测试您可以预测的错误条件,并显示您无法预测的错误的消息。一个可能的结果是第一个
mv
失败,然后所有文件都被移动到
常规