我在同一个目录中有两个文件夹
目录 exp
文件夹名称数据,日志。
我想编写 bash 脚本,这样当我单击移动 .sh 文件时,数据文件夹的内容应该移动到日志文件夹,数据文件夹中文件的名称应该转到另一个文件,即 filenames.txt,该文件也存在于 exp 目录中
答案1
如果没有重复的文件名,以下是一个简单的脚本,可以执行您想要的操作:
#!/bin/bash
ls <path-to-data-folder> >> <path-to-filenames.txt>
mv <path-to-data-folder>/* <path-to-log-folder>
插入文件夹/文件的实际路径。将其保存为 move.sh,使其可执行chmod +x <path-to-move.sh>
并运行它。
要通过单击运行它,首先右键单击move.sh
单击属性,然后转到权限选项卡并单击“允许作为程序执行文件”,如下所示:
关闭它,然后进入nautilus中的编辑->首选项->行为,点击“打开时运行可执行文本文件”,如下所示:
关闭它。
现在您只需双击即可运行该脚本move.sh
。
答案2
你需要做的第一件事是让 nautilus(你的文件资源管理器)在双击时运行可执行文件(笔记:运行从互联网下载的可执行文件时必须小心)
- 打开 Nautilus(通过单击启动器上的图标)
- 在菜单栏中点击
Edit
- 然后寻找一个名为
Behaviour
- 在
Executable Text Files
选择下Ask each time
。(笔记:您可以选择Run executable text files when they are opened
,但建议不要选择此选项,因为您可能会错误地运行可执行文件)
然后move.sh
在目录中创建文件exp
,其内容为:
#!/bin/bash
ls -1 data >> filenames.txt
mv -t log ./data/*
(您可以使用 gedit 复制粘贴以上几行并将文件保存在exp
目录中)
然后打开终端并运行:
cd exp
chmod u+x move.sh
完毕!