将文件移动到unix中的特定文件夹

时间:2015-09-09 12:15:10

标签: bash shell unix

我有一个脚本可以将.txt类型的文件移动到特定文件夹。它会在 work 文件夹中查找文件并将其移动到已完成的文件夹。 我想使脚本通用,即增强脚本,以便脚本不仅适用于一个特定文件夹,也适用于其他类似文件夹。 示例:如果文件夹/ tmp / swan / test / work以及文件夹/ tmp / swan / test11 / work中有.txt文件,则文件应移至/ tmp / swan / test / done和/ tmp / swan / test11 /分别完成。 编辑:此外,如果/ tmp / swan / test11 / work / APX等子文件夹中有.txt文件,也应移至/ tmp / swan / test11 / done

以下是当前的脚本。

  #!/bin/bash

  MY_DIR=/tmp/swan

  cd $MY_DIR

  find .  -path "*work*"  -iname "*.txt" -type f -execdir mv '{}' /tmp/swan/test/done \;

2 个答案:

答案 0 :(得分:2)

使用-execdirmv命令在找到文件的任何目录中执行。因为您只想将文件移动到"兄弟"目录,每个命令可以使用相同的相对路径../done

find . -path "*work*"  -iname "*.txt" -type f -execdir mv '{}' ../done \;

答案 1 :(得分:0)

怎么样:

find . -path '*work/*.txt' -exec sh -c 'd=$(dirname $(dirname $1))/done; mkdir -p $d; mv $1 $d' _ {} \;

(如果目标目录不存在,也会创建目标目录)。