gpt4 book ai didi

linux - 用于在列表中查找文件的 Bash 脚本,将它们复制到 dest,打印未找到的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:08 27 4
gpt4 key购买 nike

我想以我在这里找到的答案为基础:Bash script to find specific files in a hierarchy of files

find $dir -name $name -exec scp {} $destination \;

我有一个包含文件名列表的文件,我需要在备份磁盘上找到这些文件,然后将找到的这些文件复制到目标文件夹,最后将找不到的文件打印到一个新文件中。

最后一步会很有帮助,这样我就不需要复制另一个文件列表,然后再与原始列表进行比较。

如果脚本随后可以列出复制的文件并进行比较,然后打印差异,那么这正是所需要的。除非 shell 进程 find 每次“找不到”文件时都可以打印到文件。

最佳答案

假设您的列表由换行符分隔;像这样的东西应该可以工作

#!/bin/bash

dir=someWhere
dest=someWhereElse
toCopyList=filesomewhere
notCopied=filesomewhereElse

while read line; do
find "$dir" -name "$line" -exec cp '{}' $dest \; -printf "%f\n"
done < "$toCopyList" > cpList

#sed -i 's#'$dir'/##' cpList
# I used # instead of / in sed to not confuse sed with / in $dir
# Also, I assumed the string in $dir doesnot end with a /

cat cpList "$toCopyList" | sort | uniq -c | sed -nr '/^ +1/s/^ +1 +(.*)/\1/p' > "$notCopied"
# Will not work if you give wild cards in your "toCopyList"

希望对你有帮助

关于linux - 用于在列表中查找文件的 Bash 脚本,将它们复制到 dest,打印未找到的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com