使用循环从多个目录复制文件

使用循环从多个目录复制文件

我有一组单个文件basename.file,位于多个目录中basename_dir。我想将所有.file文件复制到一个目录中。我创建了一个.txt包含所有基本名称的文件。我想使用 for do 循环来执行此操作,但一直出现错误

这就是我正在使用的:

for i in `basenames.txt`; do cd ${i}_dir; cp ${i}.file ../files; done

我总是收到错误

答案1

该声明

for i in `basenames.txt`; do ...

尝试去执行 basenames.txt并循环遍历结果(空格分割)标记。

虽然你可以已经写了for i in `cat basenames.txt`; do ...不推荐 - 最好使用while read循环。

cd另外,进入目录似乎没有任何价值(而且你cd每次都忘记返回)。所以:

while read -r i; do
  cp "${i}_dir/${i}.file" files/
done < basenames.txt

尾随的/onfiles/确保目标被视为目录。

相关内容