簡體   English   中英

UNIX shell腳本-在if條件下使用mv命令

[英]unix shell scripting- Using mv command in if condition

我想根據文件擴展名將文件移動到文件夾。 例如:如果文件是.csv,則應將其移至COMPLETED文件夾,如果文件具有任何擴展名而不是任何.csv,則應將其移至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

為什么必須檢查*.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文件夾。

使用您的特定路徑以及/ 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

如果您需要任何東西,請發表評論。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM