linux - 我的 shell 脚本如何对不同文件夹中的文件进行操作?

标签 linux bash shell

我有两个文件夹,A 和 B。在文件夹 A 中,我有一个数据文件。在文件夹 B 中,我有程序文件。我想让B文件夹中的程序对A文件夹中的文件进行操作,从B文件夹运行。

我能想到的唯一方法是将文件从 A 移动到 B,在文件上运行文件夹 B 中的命令,然后将输出文件从 B 移回 A。无论如何我可以将文件保留在文件夹 A 中并从 B 运行程序?

这是我现在的脚本。它非常困惑,我认为应该有一种更简洁的方法来做到这一点。

echo "Signing with test keys....";
     mv *.apk $HOME/signapk/files/not_signed.apk;
     cd $HOME/signapk/files;
     java -jar signapk.jar testkey.x509.pem testkey.pk8 not_signed.apk signed_apk.apk;
     mv not_signed.apk $HOME/signapk/original.apk;
     mv signed_apk.apk $HOME/signapk/test_signed.apk;;
  2) echo "Signing with private keys....";
     mv *.apk $HOME/signapk/files/not_signed.apk;
     cd $HOME/signapk/files;
     java -jar signapk.jar certificate.pem key.pk8 not_signed.apk signed_apk.apk;
         mv not_signed.apk $HOME/signapk/original.apk;
     mv signed_apk.apk /$HOME/signapk/private_signed.apk;;
  3) echo "Press enter to contintue with zipaligning";
     read ;
     mv *.apk $HOME/signapk/files/zipalign.apk;
     cd $HOME/signapk/files;
     ./zipalign -v -f 4 zipalign.apk zipaligned.apk;
     mv zipaligned.apk $HOME/signapk/zipaligned;
     mv zipalign.apk $HOME/signapk/original.apk;;

最佳答案

您是否考虑过使用 symbolic links - 从你的临时目录 B 到你的另一个目录 A- 使用 ln -s命令?

所以你可以先创建一个新的空目录

mydir=$(mktemp -d)

要求你的 shell 在退出时清理它

trap "rm -rf $mydir" EXIT

然后你可以用符号链接(symbolic link)填充它

ln -s *.apk $mydir

最后在那里运行你的程序

cd $mydir
yourprog *.apk

等请随意根据您的需要进行调整。

关于linux - 我的 shell 脚本如何对不同文件夹中的文件进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8466168/

相关文章:

c - 如何使用管道在线程之间发送数组?

Bash 脚本 : Error, 文件意外结束

bash - 如何在bash脚本中转义使用curl发布的JSON变量?

python - 如何省略 "connect: network is unreachable"消息

shell - Learning Shell - 创建一个带有参数的脚本,运行两个单独的 cli 应用程序

linux - shell 中两个文件的列差异

python - 将二进制文件解释为 ASCII

linux - 联机帮助页中 Unix 命令名称后括号中的数字是什么意思?

linux - 链接分隔的单词

linux - 从文件名中存在的日期字符串设置文件修改时间