我目前正在为类项目开发一个自动评分脚本。它必须能够搜索任意数量的给定目录 例如
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工具重写代码,也会感激任何建议或帮助。
这里的主要问题是如何在我调用脚本的目录以外的路径中创建文件。提前谢谢。
答案 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'),
]