我想编写一个可以在目录中运行的bash脚本,它将执行以下操作:
有谁知道怎么做?
答案 0 :(得分:2)
为了一项复杂的任务,请帮助自己并使用除了bash之外的其他东西。我自己的第一选择是Perl,但是如果你知道任何通用编程语言,它将比纯shell更容易和更易于维护。
答案 1 :(得分:1)
我不知道这是否能为您完成这项工作,但您可以根据以下脚本做好准备:
#!/bin/bash
cd "$1"
for i in *; do j=`echo $i | cut -c 1-16`; echo $1/$i\|$j;done | awk -F\| 'seen[$
2]++ == 1 { printf("echo \"%s\"", $1) | "sh" }'
它将列出与同一目录中的另一个文件具有相同前16个字符的每个第二个文件。您可以通过mv命令轻松替换printf中的echo命令(“echo \”%s \“”,$ 1)。
现在,如果你想在特定目录下的所有子目录中使用这个脚本,让我们称它为mydir,你可以用这样的find命令来做,假设你将上面的脚本保存在一个名为myscript的文件中,它位于与mydir相同的目录:
find mydir -type d -exec ./myscript {} \;
这有帮助吗?