如何识别文件夹,然后决定是否在bash中移动它

时间:2013-01-09 12:28:15

标签: linux bash

我有一个linux问题,我想帮助...

我有一个为我创建目录的应用程序。我想编写一个查看这些目录的脚本,检查目录是否以某个字符串开头,如果是,则不管它,如果没有则移动它...

所以,从逻辑立场来看:

如果directoryname以“ABC”开头,则不执行任何操作 否则
将文件夹移动到sharedrive

这个脚本将放在cron.hourly文件夹中,以便它自动运行。

非常感谢任何帮助!!!

2 个答案:

答案 0 :(得分:2)

find . -mindepth 1 -maxdepth 1 -type d ! -name 'ABC*' -exec mv -i {} ./dest \;

如果你可以为你不想移动的目录识别一个简单的模式,你甚至可以使用bash的extglob设置:

shopt -s extglob
mv !(ABC)*/ ./dest/

答案 1 :(得分:0)

对于这样一个简单的模式,只需使用find

find * -type d ! -name "ABC*" | while read f; do mv $f /tmp/test2; done

您也可以使用类似的东西,但由于递归的发现方式可能会出现问题。

find * -type d ! -name "ABC*" -exec mv {} /tmp/test2 \;

所以你可以改为将dirs列表输出到文件中,然后移动它们。