2016-08-04 53 views
0

我有一个目录结构像这样 /dir01/dir02 /文件将文件复制到一个名为目录在bash

我想在dir02的第一个文件复制到一个单独的驱动器,并与同名目录dir01

我写了下面的脚本

while [ "${*}" != "" ] ; do 

INPUT="${1}" 
FOLDER="${INPUT}"/*DPX 
TARGET_FOLDER="/Users/user/Desktop/folder"/$(basename "${INPUT}") 

for file in "${FOLDER}"; do 
    echo cp "$file" "${TARGET_FOLDER}" 
    break 1 
done 
done 

这里输入dir01,文件夹dir02和TARGET_FOLDER是因为dir02我想复制到该文件同名的新目录。

当我运行该脚本时,它会在INPUT路径中查找名为* DPX的文件夹,该文件夹不存在。 INPUT目录中有许多名为* DPX的文件夹,我希望它从所有文件夹中取出第一个文件。

+0

检查当前目录或将dir01作为绝对路径。在某处插入'ls $ PWD/$ INPUT'来检查你是否在你认为你的目录中。另外,一些'shift'必须在这里丢失,否则你将会有一个无限循环。 –

+0

谢谢! @ Jean-FrançoisFabre – Bleakley

回答

1

尝试更换您的for有:

for file in "$INPUT"/*DPX/* 

注:

  • 你的版本是寻找一个叫*DPX因为${FOLDER}是在for行引用的文件。
  • for f in "$dir"将执行for循环一次,其中f=$dir。要查找$dir下的文件,您需要另一个/*
  • 此外,你想要一个shift前最后done
+0

谢谢!这工作! – Bleakley

+0

我很高兴能帮上忙。你能否接受答案? –

相关问题