如何在目录中找到2个具有相同名称但扩展名不同的文件,并将它们放在新目录中

时间:2017-01-16 11:14:21

标签: bash

我有一个关于bash的问题,我在一个目录中有一些不同的文件,每个文件都有一个相同名称但不同扩展名的副本,如:

文件脚本位于主目录中,目录中包含文件

def some_method
 @provider = Provider.find_by_id(params[:provider])
 @categories = @provider.categories
 respond_to do |format|
  format.json { render json: @categories}
 end
end

文件是这样的:

~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

2 个答案:

答案 0 :(得分:0)

首先进入存在所有文件的目录

def parse_centers_and_ambulances(self, response):
    json_response = json.loads(response.body_as_unicode())
    facility = MedFacilityItem()
    facility["name"] = "Med Facility #1"
    centers = []
    med_centers = MedCenterItem()
    for center in json_response:
      if center["name"].startswith("Center"):
        med_centers["response_url"] = center["product_id"]
        med_centers["name"] = center["name"]
        med_centers["address"] = center["name_short"] + "." +     
                                               center["adr_name"] + " " + 
                                               center["adr_dom"]
        med_centers["lat"] = center["latitude"]
        med_centers["lon"] = center["longitude"]
        med_centers["phoneInfo"] = [{"number": center["tel1"],
                                     "description": center["tel1_descr"]},
                                    {"number": center["tel2"],
                                     "description": center["tel2_descr"]}]
        centers.append(med_centers)

    facility["facility_type"] = centers
    return facility

上面创建带有文件名的目录(没有扩展名)忽略“文件存在”,因为目录已经创建。

然后将文件移动到所需目录

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$

你现在完成了!

答案 1 :(得分: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

很多“双引号”,以防万一文件名中有嵌入空格。

相关问题