pka*_*ing 29 linux redirection find
我正在尝试自动svnadmin dump执行备份脚本的命令,并且我想做这样的事情:
find /var/svn/* \( ! -name dir -prune \) -type d -exec svnadmin dump {} > {}.svn \;
Run Code Online (Sandbox Code Playgroud)
这似乎有效,因为它查看 中的每个 svn 存储库/var/svn,并svnadmin dump在其上运行。
但是,{}exec 命令中的第二个不会替换正在处理的目录的名称。它基本上只产生一个名为{}.svn.
我怀疑这是因为 shell 解释>为结束find命令,并尝试将 stdout 从该命令重定向到名为{}.svn.
有任何想法吗?
Den*_*son 38
您可以像这样进行重定向:
find /var/svn/* \( ! -name dir -prune \) -type d -exec sh -c 'svnadmin dump {} > {}.svn' \;
Run Code Online (Sandbox Code Playgroud)
并且将进行正确的替换。
不,但是您可以编写一个简单的 bash 脚本来执行此操作,然后从 find 中调用它。
示例(/tmp/dump.sh):
#!/bin/sh
svn admin dump "$1" > "$1".svn
Run Code Online (Sandbox Code Playgroud)
然后:
find /var/svn/* \( ! -name dir -prune \) -type d -exec sh /tmp/dump.sh '{}' \;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18717 次 |
| 最近记录: |