我有一个脚本可以将.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 \;
答案 0 :(得分:2)
使用-execdir
,mv
命令在找到文件的任何目录中执行。因为您只想将文件移动到"兄弟"目录,每个命令可以使用相同的相对路径../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' _ {} \;
(如果目标目录不存在,也会创建目标目录)。