我有一个目录,其中包含超过450 GB的子目录。这些子目录中的每个子目录中都有一个指令文件。我有一个脚本,将指令文件复制到我当前所在的目录中,并通过以下方式将其放在每个子目录中:
#!/bin/bash
for d in */; do cp "INSTALLATION INSTRUCTIONS.rtf" "$d"; done
我需要删除子目录中的所有这些文件,并用新指令替换它们。我可以简单地编写另一个执行此操作的脚本:
#!/bin/bash
for d in */; do rm "INSTALLATION INSTRUCTIONS.rtf" "$d"; done
我非常犹豫,想要起诉,因为这些文件非常重要,我不想意外删除任何内容,并且备份450+ GB非常费力。
答案 0 :(得分:1)
find . -mindepth 2 -name "INSTALLATION INSTRUCTIONS.rtf" -exec rm -f '{}' +
答案 1 :(得分:1)
因为这是非常重要的"数据,我会首先列出所有与你要删除/覆盖的文件名相匹配的文件,而不对其采取任何行动(列出除外):
find /folder/ -type f -name "INSTALLATION INSTRUCTIONS.rtf" -print > /tmp/holder
这会在/ tmp / holder上创建一个匹配列表。然后,您可以在采取任何操作(视觉或编程)之前分析此列表,以确保列表中不包含您不想删除的任何内容(处理大量数据时,可能会发生奇怪的事情,因此积极主动地保护数据。)
如果您对列表显示的内容感到满意,则可以删除旧指令,或者如果可能,使用新文件覆盖它们。以下是使用新文件覆盖旧文件的示例:
while read -r line; do cp --no-preserve=all /folder/newfile "$line"; done < /tmp/holder
cp --no-preserve=all
命令(在GNU bash上可用)将确保新文件具有足够的权限&#34;到他们所在的文件夹。如果您不希望这种情况发生,您可以将其更改为简单的cp
。