2011-05-04 25 views
1

我有一對夫婦一千文件的文件夾,我想根據文件名的字符串將它們移動到子文件夾。這些文件均具有類似的結構擊:移動多個文件到子文件夾

東西,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 

如何解決這個問題?

回答

5
for i in {1..39} 
do 
    mkdir -p r${i}/ 
    mv *run${i}_* r${i}/ 
done 
+0

那麼容易......我試過類似的東西(但不同樣)之前,遇到了「太多爭論」的陷阱。 – 2011-05-04 11:11:31

1

是這項工作作爲您的要求?

mv *run*.html dir1

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 
} 
+0

我認爲我首先遇到它的原因是我沒有使用額外{}的$ {i}。我已經廣泛地測試了這一點,因爲埃裏克的解決方案伎倆。發現是一個非常強大的東西,但是,我應該仔細閱讀一下它... – 2011-05-04 14:05:41

相關問題