我是一个标记,在一个结构如下的文件夹中提供了很多课程资料:
学生编号-> Coursework1-> coursework.thy
每个学生都有一个名为“学生号”的文件夹,其中包含一个子文件夹coursework1,并且该子文件夹包含一个扩展名为.thy的文件。令人讨厌的是,所有文件都具有相同的课程名称。现在,我要用学生的学生编号来命名所有文件。换句话说,我不想以包含文件的文件夹命名,而是以包含文件的文件夹命名。我想保留原始文件扩展名。
最终,我想将所有这些命名文件放在一个文件夹中(不带子文件夹),但是我发现了一个问题,回答了我那部分问题:如何将文件从嵌套子目录中移出到ubuntu中的另一个文件夹中?(试图剥离许多子文件夹)。
我想理想地使用终端/重击来做到这一点。
我们无法为您编写脚本,但是我可以帮助概述我建议的步骤和编程逻辑。
首先,大概是/ path / to / studentsnumbers /,您可以在其中找到上面列出的文件夹结构。将其存储在这里的变量中,我们将调用PathToStudNumbs。
PathToStudNumbs="/path/to/studentsnumbers/"
接下来,您将要探索几个有用的工具:basename和dirname。这些将获取有关特定文件路径元素的信息。在这种情况下,您可能不需要这些文件,因为您要更改的所有文件显然都被命名为相同的文件(课程)。
由于我们不知道您如何遍历目录,因此我将根据您的具体情况来使用basename和dirname进行分类。
让我们重新构造一下如何查看当前路径。我们可以将其重做为包含我们关心的使用变量的元素的东西。(我认为下面的课程编号也会随着时间而变化。)
"${PathToStudNumbs}/${StudNumbs}/${courseworkNumb}/coursework.thy"
如果将此内容放入到其他目录的cp语句中,则它将类似于以下内容:
cp "${PathToStudNumbs}/${StudNumbs}/${courseworkNumb}/coursework.thy" "${PathToDestination}/${StudNumbs}_${courseworkNumb}.thy"
这将在您选择的文件夹中复制目标文件,在该文件夹中,新文件的名称将类似于123456_coursework1.thy(即学生编号,下划线,课程编号和文件扩展名)。
或者,您可以使用mv重命名现有文件,如下所示:
mv "${PathToStudNumbs}/${StudNumbs}/${courseworkNumb}/coursework.thy" "${PathToStudNumbs}/${StudNumbs}/${courseworkNumb}/${StudNumbs}_${courseworkNumb}.thy"
询问是否需要。我会尽力而为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句