我想根据文件扩展名将文件移动到文件夹。 例如:如果文件是.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
答案 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
文件夹。
我假设您已创建COMPLETED
和Regular
个文件夹。
答案 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
如果您需要,请发表评论。 :)