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

时间:2014-09-29 12:34:09

标签: bash unix

我想根据文件扩展名将文件移动到文件夹。 例如:如果文件是.csv,它应该移动到COMPLETED文件夹,如果文件有任何扩展名,那么它应该移动到REGULAR文件夹。

下面是我的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

2 个答案:

答案 0 :(得分:5)

为什么必须检查*.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文件夹。

我假设您已创建COMPLETEDRegular个文件夹。

答案 1 :(得分:0)

使用您的特定路径和/ COMPLETED /和/ REGULAR /的路径更改YOUR_PATH。

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

/YOUR_PATH/ = /apps/int/apd/$1/work
/COMPLETED/ = /apps/int/apd/$1/COMPLETED
/REGULAR/ = /apps/int/apd/$1/Regular    

你可以试试这个。 :)

#!/bin/bash

for filename in /YOUR_PATH/*;
do
    Path="$filename"
    extension="${filename##*.}"
    if [ "${extension}" = 'csv' ]; then
            mv $Path /COMPLETED/
    else
            mv $Path /REGULAR/
    fi
done

如果您需要,请发表评论。 :)