多个文件到一个文件夹shell脚本

时间:2013-03-24 02:13:29

标签: shell file-io

我正在尝试编写一个脚本,将文件移动到基​​于文件名创建的文件夹中 每个文件有2个副本,名称完全相同但文件扩展名不同。

例如

之前

dir1 - one.txt one.rtf two.txt two.rtf other.txt other.rtf

dir1 - one two other

dir1/one - one.txt one.rtf

dir1/two - two.txt two.rtf

dir1/other - other.txt other.rtf

我以前把文件放到文件夹脚本中,但我不知道如何将多个文件放入1个文件夹

继承文件到文件夹代码。

#!/bin/bash

dir="/home/user1/Desktop/f2f/"

for file in ${dir}/*
do
        mkdir -p "${file/./#}"
        mv "${file}" "${file/./#}/"
done

无论如何,任何帮助将不胜感激,如果有帮助,命名约定和文件扩展名将始终相同

1 个答案:

答案 0 :(得分:0)

我不太确定原始脚本的用途是什么,因为您似乎为名为<file>.<extension>的每个<filename>#<extension>生成一个文件夹,然后放置<file>.<extension>

我想您正在寻找的版本就是这个版本:

for file in *
do
    mkdir -p ${file%.*}
    mv $file ${file%.*}/
done

请务必使用 ungreedy 变体与单个(!)%,因为您只想从文件名中删除最后一个组件。

想象一个名为first.part.second.part.txt的文件,您只想剥离.txt

在(find dir1)之前给出以下文件夹布局:

dir1/
dir1/two.txt
dir1/one.rtf
dir1/two.rtf
dir1/other.txt
dir1/other.rtf
dir1/one.txt

这将导致以下布局向后(find dir1再次):

dir1
dir1/other
dir1/other/other.txt
dir1/one
dir1/one/one.rtf
dir1/one/one.txt
dir1/two
dir1/two/two.txt
dir1/two/two.rtf

如果那就是你要找的东西。