我正在尝试编写一个脚本,将文件移动到基于文件名创建的文件夹中 每个文件有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
无论如何,任何帮助将不胜感激,如果有帮助,命名约定和文件扩展名将始终相同
答案 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
如果那就是你要找的东西。