我有一个包含几千个文件的文件夹,我想根据文件名中的字符串将它们移动到子文件夹中。这些文件都具有类似
的结构东西-run1_001.txt
东西-run22_1243.txt
所以我尝试了下面的脚本,以便将包含“run1”的所有文件移动到子文件夹r1和子文件夹r22中的所有“run22”文件(依此类推),但它没有那样工作,我得到了消息“文件X与文件X相同”。
#!bin/bash
for i in {1..39}
do
foldername=r$i
#echo "$foldername"
mkdir $foldername
find . -type f -name "*run$i_*" | xargs -i mv {} $foldername/
done
如何解决这个问题?
答案 0 :(得分:5)
for i in {1..39}
do
mkdir -p r${i}/
mv *run${i}_* r${i}/
done
答案 1 :(得分:1)
这是你的要求吗?
mv *run*.html dir1
答案 2 :(得分:0)
如果你仍然遇到“太多参数”陷阱,你可以通过管道查找到一个while循环
#!/bin/bash -u
find . -maxdepth 1 -name '*-run*_*.txt' |
{
while read FNAME
do
N=${FNAME##*-run}
N=${N%_*}
DIR=r$N
test -d $DIR || mkdir $DIR
mv $FNAME $DIR/.
done
}