2017-01-16 98 views
-2

我有一個bash問題,我在一個目錄中有一些不同的文件,每個文件都有一個相同的副本名稱但不同的擴展,這樣的:如何在一個目錄中找到2個具有相同名稱但擴展名不同的文件,並將它們放在一個新目錄中

文件腳本是在主目錄,並在家裏

~home/file_directory: 

的文件和文件的目錄是這樣的:

pippo.cvs 
    pippo.xlsx 
    mimmo.cvs 
    mimmo.xlsx 
    lollo.cvs 
    lollo.xlsx 

我想有一個新的目錄與他們中的兩個文件的名稱相同:

pippo 
    mimmo 
    lollo 

~home/file_directory/pippo: 
    pippo.xlsx 
    pippo.csv 

所以

pippo -> pippo.xlsx pippo.cvs 
mimmo -> mimmo.xlsx mimmo.cvs 
lollo -> lollo.xlsx lollo.csv 

回答

0

首先進入,所有的文件都存在的目錄

Administrators-MacBook-Pro:test anudeep$ for i in *;do mkdir ${i%.*};done 
mkdir: lollo: File exists 
mkdir: mimmo: File exists 
mkdir: pippo: File exists 
Administrators-MacBook-Pro:test anudeep$ 

上面創建的目錄與文件名(沒有擴展名)忽略「文件存在」,因爲該目錄已被創建。

然後將文件移動到所需的目錄

Administrators-MacBook-Pro:test anudeep$ for i in *.*;do mv $i ${i%.*};done 

現在完成了!

0

這是一個相當基本的腳本問題,關鍵位被提取的目錄名稱:

for fname in *.cvs *.xlsx 
do 
    # delete the shortest string on the right 
    # starting with '.' 
    dname=${fname%.*} 

    # If the directory does not exist then create it 
    [[ -d $dname ]] || mkdir "$dname" 

    mv "$fname" "$dname" 
done 

大量的「雙引號」的,以防萬一有嵌入空格的文件名。

相關問題