UNIX:重命名来自find命令的文件

时间:2011-05-12 03:37:47

标签: unix find rename flags locked

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

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

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

我面临两个问题:

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

1 个答案:

答案 0 :(得分:1)

这应该是一个好的开始。

我假设您没有将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" {} \;