我有一个名为solution.txt的文件。我需要检查当前目录中是否存在这样的文件。如果存在,则删除该文件并将其替换为(solution.txt)
示例:在我的目录中: wer.txt wer1.txt wer2.txtsolution1.txtsolution23.txtsolution32.txt
我需要从目录中删除所有以“solution”开头、以txt结尾的文件,并将其替换为solution.txt。
请给出shellscript解决方案。
答案1
您可以尝试并适应删除所有solution...txt文件,但不删除solution.txt(如果存在):
find . -type f -name "solution[0-9]*.txt" -exec rm -f {} \;
但不能有多个文件名solution.txt
答案2
也许不是你问的问题,但这是我的答案:
首先,您需要找到您正在寻找的那些:
find /file/where/you're/looking/at -name solution | grep txt
找到它们后,您可以使用以下方法删除它们:
rm thename23.txt thename34.txt
或者将它们合并(如果您想完全替换它们,则仅使用一个>
):
cat thename23.txt >> thename34.txt
您还可以使用命令-exec
的选项find
。更多信息这里。
问候
答案3
您没有定义“用solution.txt替换它们”的含义,但由于您想首先删除其他解决方案文件,我想假设您在某处有替换文件,否则这个问题没有多大意义。
我认为最简单的方法是
rm solution[0-9]*.txt >/dev/null && cp /from/somewhere/solution.txt .
这会尝试删除这些文件,如果成功,则会将solution.txt复制到您的工作目录。换句话说:您保证之后要么根本没有解决方案文件,要么只有一个名为solution.txt的解决方案文件。
请注意,这也会删除名为solution5x.txt 的文件。我不知道这对你来说是否可以接受。如果这是一个问题,您需要使用正则表达式来匹配文件名,例如使用find ... -regex
.