我有一组单个文件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/
确保目标被视为目录。