我记得很久以前我就用过这样的东西:在 Total Commander 中,我在复制对话框中按下 F2 - 将“复制任务”添加到“复制队列”中。这样,所有这些文件都按顺序复制了。有没有简单的工具可以进行这种“顺序”复制?
编辑:我想动态地将“复制任务”添加到队列中。
示例:我有很多大文件。我知道我想复制文件 A。在复制文件 A 时,我知道我还必须将文件 B 复制到某个地方,但我需要在复制完 A 后立即开始复制。
答案1
我不确定你的意思,这是复制命令的默认行为(cp
):
复制多个文件:
cp *txt *jpg destination_dir
以下是一些更复杂操作的示例:
复制从列表中读取的所有文件(假设文件名合理,没有空格或奇怪的字符):
while read n; do cp $n destination_dir < file_list.txt
与上述相同,但适用于包含空格或奇怪字符的文件名:
while IFS= read -r n; do cp "$n" destination_dir < file_list.txt
查找所有与模式匹配的文件并复制它们:
find . -name "*data*" -exec cp {} destination_dir \;
与上述类似,但适用于奇怪的文件名:
find . -print0 -name "*data*" | xargs -0 cp -t destination_dir \;
我还是不明白为什么你可能想这样做,但没关系。要添加在当前操作结束后执行的复制操作,你可以这样做:
创建要复制的文件列表。由于您从一个文件开始,因此列表将仅包含一个文件名:
echo "fileA" > list.txt
通过读取列表开始复制文件(和前面一样,假设理智的文件名,如果您的文件名可以包含空格或奇怪的非字母数字字符,请使用上面列表中的示例 2):
while read n; do cp -v $n destination_dir < file_list.txt
找到下一个要复制的文件并将其添加到列表中:
echo "fileB" >> list.txt
只要在复制完成之前执行第 3 步,则第一个文件完成后就会立即复制下一个文件。
我只是不明白为什么你不直接启动多个独立cp
命令。据我所知,你毫无理由地把事情复杂化了。