将文件复制到一个名为目录在bash
问题描述:
我有一个目录结构像这样 /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的文件夹,我希望它从所有文件夹中取出第一个文件。
答
尝试更换您的for
有:
for file in "$INPUT"/*DPX/*
注:
- 你的版本是寻找一个叫
*DPX
因为${FOLDER}
是在for
行引用的文件。 -
for f in "$dir"
将执行for
循环一次,其中f=$dir
。要查找$dir
下的文件,您需要另一个/*
。 - 此外,你想要一个
shift
前最后done
。
+0
谢谢!这工作! – Bleakley
+0
我很高兴能帮上忙。你能否接受答案? –
检查当前目录或将dir01作为绝对路径。在某处插入'ls $ PWD/$ INPUT'来检查你是否在你认为你的目录中。另外,一些'shift'必须在这里丢失,否则你将会有一个无限循环。 –
谢谢! @ Jean-FrançoisFabre – Bleakley