1

我基本上想向锁定目录中的所有文件添加一个字符串。我无法将文件名传递给mv命令:

find . -flags uchg -exec chflags nouchg "{}" | mv "{}" "{}"_LOCK \;

上面的代码显然不起作用,但我认为它解释了我正在尝试做的事情。

我面临两个问题:

  1. 将字符串添加到文件名的末尾但在扩展名 ( 001_LOCK.jpg) 之前。
  2. 将命令的输出传递find两次。我需要这样做,因为它不会让我在文件被锁定时更改文件的名称。所以我需要解锁文件然后重命名它。

有没有人有任何想法?

4

1 回答 1

2

这应该是一个好的开始。

我假设您不会将 chflags 传递给 mv,这没有意义,但如果 chflags 失败,只需重命名文件即可。处理扩展更加棘手,但肯定是可行的。

find . -flags uchg -exec sh -c "chflags nouchg \$0 || mv \$0 \$0_LOCK" {} \;

编辑:如果 chflags成功,则重命名:

find . -flags uchg -exec sh -c "chflags nouchg \$0 && mv \$0 \$0_LOCK" {} \;
于 2011-05-12T09:41:17.087 回答