递归文件移动

时间:2017-09-17 17:38:34

标签: linux bash shell

我正在尝试组织大量文件。所有文件都是zip存档。我有一个带有一堆子目录的主目录。所有文件都位于子目录中。文件结构如下

games/gs1/games.zip    
games/gs2/games.zip    
games/gs3/games.zip

我想要做的是运行一个shell脚本,它将转到每个子目录,创建一个名为USA的文件夹,在文件名中找到该子目录中包含(USA)的所有文件,并将它们移动到新文件夹。我应该有像

这样的文件结构
games/gs1/USA/gs1-1(USA).zip
games/gs1/USA/gs1-2(USA).zip

games/gs2/USA/gs2-1(USA).zip
games/gs2/USA/gs2-2(USA).zip

我试过

for d in ./*/
do
    cd $d
    mkdir -p USA
    find . -name '*(USA)*' -exec echo mv -t ./USA {} +
done

但它只显示所有文件被移动到游戏/美国。

2 个答案:

答案 0 :(得分:0)

你也可以在没有find的情况下单独使用globs:

#! /bin/bash

for dname in ./*/; do
    mkdir "$dname/USA"
    mv "$dname"/*USA*.zip "$dname/USA"
done

答案 1 :(得分:0)

bash + 查找解决方案:

#img5{  
  left: 4px;
  bottom: 74px;
 }