文件夹操作不会触发shell脚本

时间:2016-07-29 18:14:59

标签: bash shell directory osx-elcapitan automator

我有一些软件将名为LinearLayout commentsContainer = (LinearLayout) findViewById(R.id.view_comment_container); commentsContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); commentsContainer.setOrientation(LinearLayout.HORIZONTAL); for (int i = 0; i < postView.commentLenght(); i++) { Log.e("LENGTH", postView.commentLenght()+"x"+i); LinearLayout commentContainer = new LinearLayout(PostViewActivity.this); commentContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); LinearLayout userContainer = new LinearLayout(PostViewActivity.this); userContainer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); userContainer.setOrientation(LinearLayout.VERTICAL); commentContainer.setOrientation(LinearLayout.HORIZONTAL); commentContainer.setPadding(25,0,0,0); ImageView commentImage = new ImageView(PostViewActivity.this); commentImage.setLayoutParams(new LinearLayout.LayoutParams((int) ((float) width / 6), (int) ((float) width / 6))); commentImage.setImageBitmap(postView.getComment(i).getImage()); TextView commentText = new TextView(PostViewActivity.this); commentText.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); commentText.setText(postView.getComment(i).getText()); TextView displayUserText = new TextView(PostViewActivity.this); displayUserText.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); displayUserText.setText(postView.getComment(i).getDisplayName()); Log.d("TEXT", postView.getComment(i).getText()); Log.e("TEXT", displayUserText.getText()+""); displayUserText.setTag(postView.getComment(i).getUsername()); displayUserText.setTextSize(12); displayUserText.setTextColor(getResources().getColor(R.color.colorAccent)); userContainer.addView(commentImage); userContainer.addView(displayUserText); commentContainer.addView(userContainer); commentContainer.addView(commentText); commentsContainer.addView(commentContainer); } 的文件导出到名为My Library.bib的文件夹中。假设导出文件的名称是固定的。每次导出这样的文件时,我想:

  1. 删除任何名为thesis的旧文件(如果存在)。
  2. 从此新文件中删除空格,使其成为最新的MyLibrary.bib
  3. 我尝试过制作Automator&#39;文件夹操作&#39;如下:

    folder action

    ...但是,如果shell脚本在手动运行时工作正常,则文件夹操作本身似乎永远不会触发。

    尽管如此启用了文件夹操作(请参阅下面的设置),其他文件夹操作似乎也有效。

    folder actions setup

    总之,我只想让名为MyLibrary.bib的任何文件进入My Library.bib文件夹(在任何时候,自动),重命名为thesis,替换现有的MyLibrary.bib个文件。任何想法出了什么问题,或者如何实现这个目标?提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用&#34; 运行Shell脚本&#34;动作,当前目录是主页文件夹,而不是&#34; 论文&#34;文件夹中。

因此,您必须使用cd命令来更改当前目录

信息:

  • &#34; 获取文件夹内容&#34;对你想做的事情没有用, 你可以删除它。
  • 不需要rm命令,您可以使用mv -f 覆盖现有文件
read firstLine ### get the path of the first dropped item
myDir=$(dirname "$firstLine") ### get the parent (this folder action)
cd "$myDir" && if [ -f "My Library.bib" ]; then 
    mv -f "My Library.bib" "MyLibrary.bib"
fi