我有一个约300个文件的文件夹。它们以这种形式命名:[email protected]。我大约需要40个,并且有一个用户名列表(保存在名为names.txt的文件中)。每个用户名是文件中的一行。我需要大约40个这些文件,并想将需要的文件复制到只有我需要的文件的新文件夹中。
在文件names.txt的第一行仅包含用户名的情况下(例如,eternalmothra),我要复制的PDF文件名为[email protected]。
while read p; do
ls | grep $p > file_names.txt
done <names.txt
这似乎应该从列表中读取,并且每一行都将用户名转换为[email protected]。不幸的是,似乎只有最后一个保存到了file_names.txt。
第二部分是将所有文件复制到:
while read p; do
mv $p foldername
done <file_names.txt
(我还没有尝试过第二部分,因为第一部分不起作用)。
顺便说一下,我正在与Cygwin一起做所有这一切。
1)第一个脚本不会复制所有内容有什么问题?2)如果我可以正常使用,第二个脚本是否可以正确复制它们?(实际上,我认为最好只复制而不是移走它们)。
编辑:我想补充一点,我想出了如何从此处读取txt文件中的行:在bash中循环浏览文件内容
来自注释的解决方案:您的问题仅仅是,echo a > b
正在覆盖文件,而echo a >> b
正在追加到文件,因此请替换
ls | grep $p > file_names.txt
和
ls | grep $p >> file_names.txt
如果任务每天运行,可能会有更有效的解决方案,但是对于300个文件的一次性文件而言,脚本是不错的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句