使用bash

时间:2016-04-12 11:26:15

标签: linux bash shell unix

我目前正在为类项目开发一个自动评分脚本。它必须能够搜索任意数量的给定目录 例如

USR / autograder / JDOE /

jdoe包含两个文件house.c和readme.txt。

我需要在jdoe中创建一个名为jdoe.pdf的文件

目前我正在使用下面这行代码来获取创建文件所需的路径。其中$ 1是包含项目的路径的用户输入,自动评分者将评分。

find $1 -name "*.txt" -exec sh -c "dirname {}" 

当我尝试将/somename.pdf添加到此语句的末尾时,我得到readme.txt / somename.pdf

与另一个-exec一起获取文件的名称。

\; -exec sh -c "dirname {} xargs -n 1 basename" \;

我在将这两者合并为一个工作陈述时遇到了问题。 我是unix编程的新手,即使它意味着使用不同的unix工具重写代码,也会感激任何建议或帮助。

这里的主要问题是如何在我调用脚本的目录以外的路径中创建文件。提前谢谢。

4 个答案:

答案 0 :(得分:3)

这个怎么样?

select p from Project p left join fetch p.customer

答案 1 :(得分:2)

您可以使用更改目录命令(cd)在其他路径中创建文件。

如果您在usr / autograder / script中启动脚本并想要更改为usr / autograder / jdoe,则可以使用shell命令cd ../jdoe(相对)或cd usr/autograder/jdoe(绝对)更改目录。 / p>

现在你在usr / autograder / jdoe的目录中,你可以在这个目录中创建文件,例如gedit readme.txt将打开gedit并在usr / autograder / jdoe中创建文件。

答案 2 :(得分:1)

最简单的方法是遍历find返回的文件,然后执行您需要做的任何事情。

例如:

find "$1" -type f -name "*.txt" -print0 | while IFS= read -r -d $'\0' filename; do
    dir=$(dirname "$filename")

    # create pdf file
    touch "$dir/${dir##*/}.pdf"
done

(注意使用find -print0来正确处理包含空格和换行符的文件名。)

答案 3 :(得分:1)

这是你在找什么?

urlpatterns = [
    url(r'^url_name/', login_required(SomeView.as_view()), name='url_name'),
    ]