[英]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
文件夾中。
我假設您已經創建了COMPLETED
和Regular
文件夾。
使用您的特定路徑以及/ 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.