2017-01-16 94 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 

大量的“双引号”的,以防万一有嵌入空格的文件名。

相关问题