LINUX bash文件:RENAME按其中的文件数量进行子目录

时间:2013-12-28 19:26:56

标签: linux bash

** 1。我想写LINUX bash文件,我想重命名子目录/ FOLDERS     它们中的文件数量(如果它们存在,则存放在子文件夹中)示例:我有这样的结构(我有~300个FOLDERS并随机计算子文件夹,我们用文件)

MUSIC
-CD1
 --ELTON
 --MADONA
-CD34
 --SUMER
-CDBESTOF2013
  --WINTER
  --2009
  --2010
-CDGREATTESTHITS 
  --HITS1
  --HITS30

... ...

CD1 had 35 *.mp3 files in ALL SUBFOLDERS
CD34 had 10 *.mp3 files in ALL SUBFOLDERS
CDBESTOF2013 had 300 *.mp3 files in ALL SUBFOLDERS
CDGREATTESTHITS had 99 *.mp3 files in ALL SUBFOLDERS

I want to run Linux bash file to rename/add sufix to subdirs by
count of files in them RESULT:

MUSIC
-CD1_35
-CD34_10
-CDBESTOF2013_300
-CDGREATTESTHITS_99 

... ... 谢谢你... **

4 个答案:

答案 0 :(得分:0)

这样的东西在perl中更容易

perl -l -e 'for $i (@ARGV) { $a=()=(<$i/*>); rename  $i, "${i}_${a}"}' dir1 dir2 dir3 dir4 dir4 dirpattern*

答案 1 :(得分:0)

你走了。

for dirs in music/*; do
    count=$(find "$dirs" -type f | wc -l)
    mv "$dirs" "${dirs}_${count}"
done

for loop将列出music/中的所有子目录,并将每个目录名称分配给$dirs

count将获取子目录中的文件数。

答案 2 :(得分:0)

MYDIR=$PWD
input_dirlist=`ls -l $MYDIR | egrep '^d' | awk '{print $9}'`
for f in $input_dirlist
do

    count=`ls -lR $f| grep ^- | wc -l`
    mv $f $f"_"$count 
done

答案 3 :(得分:0)

尝试这样的事情我没有时间去测试它

   for dir1 in $( find ./ -type d );do
       cnt=$(ls $dir1 | wc -l)
       dir2=$(dirname $dir1)
       mv $dir1 $dir2_${cnt}
    done