2016-12-21 88 views
2

我想用一個腳本從外部驅動器自動安裝我的家庭文件夾。我的系統是Ubuntu 16.04。bash:從其他驅動器自動安裝文件夾到家

我想檢查在外部目錄中是否存在與HOME文件夾同名的文件夾,然後將HOME中的文件夾重命名爲foldername_local,並將外部目錄文件夾掛載到HOME中。

這是多遠我與谷歌的幫助和計算器有:

REMOTE=/path/to/remote/location 

#create a list of external folders  
rLIST=$(find $REMOTE -maxdepth 1 -type d -name [^\.]\* -printf '%f\n'| sed 's:^\./::') 

#create a list of folders in HOME 
hLIST=$(find $HOME -maxdepth 1 -type d -name [^\.]\* -printf '%f\n'| sed 's:^\./::') 

#declare comparison function 
contains() { 
[[ $1 =~ (^|[[:space:]])$2($|[[:space:]]) ]] && exit(0) || exit(1) 
} 

for item in "$rLIST"; do 

if contains hLIST item 
    then 
#rename folder and mount external drive fodlers 
mv $HOME$item $HOME$item_local 
mount --bind $REMOTE$item $HOME$item 
    else 
continue 
fi 

done 

創建的文件夾名單至今的作品。

不幸的是比較部分不工作,我卡住了。

我很欣賞關於如何解決這個問題的任何想法。

來源:
How do I check if a variable exists in a list in BASH
Listing only directories in UNIX

回答

0
for item in /path/to/remote/location/*; do 
    dir=${item##*/} 
    [ -d $item ] && [ -d /home/$dir ] && mv /home/$dir /home/${dir}_local && mkdir /home/$dir && mount --bind $item /home/$dir 
done 
+0

感謝您的提示[參數擴展](http://wiki.bash-hackers.org/syntax/pe#substring_removal) –

+0

不幸的是我得到只有第10行:[:缺少']'並且不起作用。第1行是[-d $ item] - 行。 –

+0

對不起,我還沒有編輯我自己的評論。錯誤指的是第10行:[-d $ item] && .... –

相關問題