我正在使用 Linux,我想用现有文件/home/user/offblack.png 替换所有包含字符串 000000 的文件,但保留现有文件名。我已经使用 -exec 和 xargs 的各种组合进行了一段时间的研究,但没有成功。到目前为止,我有:
find | grep 000000
它确实列出了我想要更改的所有文件。如何复制这些文件并将其替换为我现有的 offblack.png 文件?
最佳答案
这是我会使用的:
find (your find args here) \
| xargs fgrep '000000' /dev/null \
| awk -F: '{print $1}' \
| xargs -n 1 -I ORIGINAL_FILENAME /bin/echo /bin/cp /path/to/offblack.png ORIGINAL_FILENAME
展开,找到您感兴趣的所有文件,在其中 grep 查找字符串 '000000'(添加/dev/null 到文件列表,以防生成的 fgrep
之一s 最终只有一个文件名 - 它确保输出的格式始终为“文件名:<包含'000000'>”的行),仅删除文件名,然后一个一个地复制 offblack.png 覆盖这些文件.请注意,我在其中插入了一个 /bin/echo
。那是你的试运行。删除 echo 以使其真正运行。
如果您的意思是文件名包含“000000”:
find . -type f -a -name '*000000*' -exec /bin/echo /bin/cp /path/to/offblack.png {} \;
简单多了。 :-) 查找当前目录下名称包含您的字符串的每个文件,并在其上执行 offblack.png 的副本。再一次,我给你的是试运行。消除现场消防演习的 echo 。 :-)
关于linux - 使用 bash,如何找到包含特定字符串的所有文件并将它们替换为现有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948118/