0

我正在尝试编写一个脚本,将文件移动到基​​于文件名创建的文件夹中。每个文件有 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

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

4

1 回答 1

0

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

我猜你正在寻找的版本是这个:

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

请务必使用带有单个(!)的不贪婪%变体,因为您只想从文件名中删除最后一个组件。

例如,想象一个名为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

如果那是你要找的。

于 2013-03-24T02:33:02.313 回答