Bash 查找并移动名称为 '[ ]' 的文件

标签 bash find

我正在制作的 bash 脚本的一部分涉及 rar 拆分文件,然后在完成后将拆分文件移动到另一个目录。

因此,如果我有一个像“test file.txt”这样的文件,它首先会被压缩为“[test] file.txt.part1.rar”、“test file.txt.part2.rar”,然后两者rar 的将被移动到另一个目录。

我的 rar 位工作正常,但我在查找和移动时遇到了问题。

这是我的脚本:

#!/bin/bash

# [...]    

rar a -m0 -v104857600b "$1.rar" "$1";

find $folder -name "$1.part*" -exec mv {} $someotherfolder \;

然而它似乎并没有起作用。我已经测试过从 shell 中找到一个衬里,我猜问题是因为文件的名称中有括号 ->“[”和“]”

大家怎么看?

最佳答案

'[' 和 ']' 在 shell 中用来描述字符集。您必须使用“\”转义它们才能获得正确的行为。如果你不逃避他们,你告诉 find 寻找带有 't' 或 'e' 或 's' 或 't' 的文件:)

要用参数 $1 做到这一点,你必须使用类似的东西:

param=$(echo $1 | sed 's@\[@\\[@g'| sed 's@\]@\\]@g')

并使用 '$param' 而不是 '$1'

我的 2 美分

关于Bash 查找并移动名称为 '[ ]' 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6648112/

相关文章:

linux - awk '/a/{print $4 "\t"$3} abc.txt 是什么意思?

Git 获取行编辑时间

Mongodb:在 find() 中使用 $or 时返回匹配的过滤器

Linux命令: How to 'find' only text files?

bash - 一个简单的小 shell 脚本来计算平均值

bash - 为什么这个命令不起作用 : cd `echo -n " ~"`

linux - 使用 bash/linux 在特定行之后创建一个空行

Bash 脚本 - 查找具有非零字节内容的目录

php - 学说 2 : select error

Perl:查找早于X分钟的文件的最快方法,按从旧到新的顺序排列?