【发布时间】:2015-04-30 02:16:46
【问题描述】:
我正在尝试为分配编写基本的find 命令(不使用find)。现在我有一组文件我想exec 一些东西。语法如下所示:
-exec /bin/mv {} ~/.TRASH
我有一个名为current 的数组,其中包含所有文件。我的数组只包含/bin/mv、{} 和~/.TRASH(因为我将-exec 移出)并且位于一个名为arguments 的数组中。
我需要它,以便将每个文件都传递到 {} 并在其上调用 exec。
我想我应该像这样使用sed 替换{} 的内容(在for循环中):
for i in "${current[@]}"; do
sed "s@$i@{}"
#exec stuff?
done
我如何执行其他参数?
【问题讨论】:
-
@anubhava 抱歉,我的意思是我正在编写基本的
find命令,但我不允许使用find。 -
@anubhava 我需要用我从
current传入的文件替换字符串{},然后我需要exec mv将该文件放入垃圾箱。所以我用那个文件替换{}的每个实例,然后在那个文件上执行一个命令。我不知道,如果它应该是这样工作的,或者是否有更简单的方法。 -
很抱歉,如果不提供完全清晰的信息,您将无法在此处获得答案。你的输入文件中有文字
{}吗? -
@anubhava 对此感到抱歉:(我没有。大多数文件只是普通文件,即
test.txt。所以如果我的current中有test1.txt,test2.txt数组,并且用户传入-exec /bin/mv {} ~/.TRASH,那么它看起来像这样:for i in current[0] ... exec mv test1.txt ~/.TRASH...for i in current[1] ... exec mv test2.txt ~/.TRASH它遍历每个文件并执行mv命令
标签: arrays linux bash shell sed