我有一个非常长的文件列表,存储在我想在我的驱动器上找到的文本文件(missing-files.txt)中。这些文件分散在我驱动器的不同文件夹中。我想获得任何可以找到的最接近的可用。
丢失文件.txt
wp-content/uploads/2019/07/apple.jpg
wp-content/uploads/2019/08/apricots.jpg
wp-content/uploads/2019/10/avocado.jpg
wp-content/uploads/2020/04/banana.jpg
wp-content/uploads/2020/07/blackberries.jpg
wp-content/uploads/2020/08/blackcurrant.jpg
wp-content/uploads/2021/06/blueberries.jpg
wp-content/uploads/2021/01/breadfruit.jpg
wp-content/uploads/2021/02/cantaloupe.jpg
wp-content/uploads/2021/03/carambola.jpg
....
这是我的工作 bash 代码:
while read p;
do
file="${p##*/}"
/usr/local/bin/fd "${file}" | /usr/local/bin/rg "${p}" | /usr/bin/head -n 1 >> collected-results.txt
done <missing-files.txt
我的 bash 代码中发生了什么:
- 我从我的文件列表中迭代
- 我使用FD ( https://github.com/sharkdp/fd ) 命令在我的驱动器中找到这些文件
- 然后我将它传送到RIPGREP ( https://github.com/BurntSushi/ripgrep ) 以过滤结果并找到最接近的匹配项。我正在寻找的匹配应该匹配相同的文件和文件夹结构。我只限制一个结果。
- 然后最后将其存储在另一个文本文件中,稍后我可以评估列表以进行下一步
我需要帮助的地方:
- 这是最有效的方法吗?我有超过 2,000 个文件需要查找。我对其他解决方案持开放态度,这是我刚刚划分的。
- 由于某种原因,我的编码坏了,它停止将结果返回到“collected-results.txt”。我的猜测是它在FD命令之后的第二个管道中的某个地方坏了。我没有设置任何条件以防它遇到错误或找不到文件,所以我很难确定。
附加信息:
- 我正在使用 Mac,并在 Catalina 上运行
- 显然这不是我的专业领域