如何解决Linux:递归查找字典中的文件列表
|| 我有一个文本文件,每行一个文件名:Interpret 1 - Song 1.mp3
Interpret 2 - Song 2.mp3
...
(约200个文件名)
现在,我想递归搜索此文件名的文件夹,以获取Filenames.txt中每个文件名的完整路径。
这该怎么做? :)
(目的:已将文件复制到我的MP3播放器中,但其中一些文件已损坏,我想将它们全部复制,而无需花费数小时从我的音乐文件夹中进行研究)
解决方法
最简单的方法如下:
cat orig_filenames.txt | while read file ; do find /dest/directory -name \"$file\" ; done > output_file_with_paths
, 更快的方法是只运行一次find命令并使用fgrep。
find . -type f -print0 | fgrep -zFf ./file_with_filenames.txt | xargs -0 -J % cp % /path/to/destdir
, 您可以将while读取循环与find
一起使用:
filecopy.sh
#!/bin/bash
while read line
do
find . -iname \"$line\" -exec cp \'{}\' /where/to/put/your/files \\;
done < list_of_files.txt
其中“ 5”是逐行列出的文件列表,“ 6”是您要复制到的位置。您可以像这样在目录中运行它:
$ bash filecopy.sh
, @ jm666答案为+1,但是-J
选项不适用于我的xargs风格,因此我将其更改为:
find . -type f -print0 | fgrep -zFf ./file_with_filenames.txt | xargs -0 -I{} cp \"{}\" /path/to/destdir/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。