2016-02-03 51 views
0

我有兩個文件夾,如下所示:獲取文件夾中文件的名稱,並使用它們從另一文件夾移動到具有這些名稱的文件中?

folder1 
file1.shp 
file1.dbf 
file2.shp 
file2.dbf 
file3.shp 
file3.dbf 


folder2 
file1.prj 
file2.prj 
file4.prj 

我想要做的是找出文件夾1具有相同的文件名的文件夾2中的文件,獨立的擴展以及傳輸他們文件夾2。輸出應該是:

folder2 
file1.prj 
file2.prj 
file4.prj 
file1.shp 
file1.dbf 
file2.shp 
file2.dbf 

這是我這麼遠:

for i in folder2/*.*; do 
    FILE=$(basename "$i") 
    echo find folder1 -name ${FILE%.*}.* -exec mv -i {} folder2 \; 
done 

這是我離開的這段代碼,但文件不會從文件夾1移至文件夾2。

find folder1 -name file1.* -exec mv -i {} folder2 ; 
find folder1 -name file2.* -exec mv -i {} folder2 ; 
find folder1 -name file3.* -exec mv -i {} folder2 ; 

對不起,我昨天開始學習這種編程,所以非常感謝任何幫助。

[編輯]

代碼工作無回聲線3.感謝那些誰以下評論指出來。

for i in folder2/*.*; do 
    FILE=$(basename "$i") 
    find folder1 -name ${FILE%.*}.* -exec mv -i {} folder2 \; 
done 
+1

我認爲你需要的'*'(例如使用'\ *'或引用逃脫:'」 file1。*「' - 否則shell會擴展它並找不到匹配結果 – Kenney

+1

您是否添加'echo'來首先測試命令並忘記刪除它? –

+1

您刪除了'echo' ???您需要啓動'找到'直接不要回顯 –

回答

0

我剛剛試了一下這個樣子,這對我的作品......

#!/bin/bash 

for f in folder2/* 
do 
filename=${f##*/} 
filename_without_ext=${filename%.*} 

for ff in ${filename_without_ext[@]} 
do 
    find folder1 -name ${ff}.* -exec mv -i {} folder2 \; 
done 

done 
相關問題