使用csv extention更改目录中的文件名

时间:2017-10-02 13:03:03

标签: linux bash shell csv

我想将扩展名为csv的文件名更改为#include <stdio.h> #include <stdlib.h> #include <limits.h> // For INT_MIN int main(int argc, char ** argv) { int l, i; int first = INT_MIN; // It will set first and second at the minimum int second = INT_MIN; // value possible for an int. for (i = 1; i < argc; i++) { // there is no need for arr // just use argc for iterations. // The element 0 of argv is the // binary name, thus i starts from 1 l = atoi(argv[i]); // as soon you are still learning // atoi is a good solution, but you should // consider something more robust for your // conversion. Consider that if you give as // input to your code // bin.exe hello -1 -2 // the result is: // First = 0, Second = -1 // since atoi("hello") is 0. // in this way you are not forced to have less than // 100 elements in input. if (l > first) { // shifting the first second = first; first = l; } else if (l > second) // saving only in the second second = l; } printf("First = %d\nSecond = %d\n", first, second); return 0; } 。该文件位于test.txt。 问题是,文件的名称每次都不同(例如:/Users/xx/xx)并且它是不可预测的。但是,扩展名始终为csv,位置也是常量 我应该提一下,每次文件夹中唯一存在的文件是提到的csv文件,因此,文件夹中只有一个文件,每次名称都不同。
事实上,我需要改变 part-r-00000-865affea-3ead-445e-ad3e-8703a8d79026.csv(名称始终更改)为part-r-00000-865affea-3ead-445e-ad3e-xxxx.csv

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用globbing来定位文件,而无需知道其全名。

考虑到你知道文件的目录,它的扩展名,并且它是唯一一个在此目录中具有此扩展名的目录,你可以简单地使用这个mv

mv /Users/xx/xx/*.csv /Users/xx/xx/test.txt

这会将.csv(在您的情况下,您的单个CSV文件)中的每个/Users/xx/xx/文件重命名为/Users/xx/xx/test.txt

如果有多个.csv文件,那么显然会出现问题,因为每个文件都会覆盖前一个文件。如果它可能成为一个问题,你应该检查这个glob匹配的文件数量,如果它大于1则退出错误或使用一个只会对单个文件起作用的命令。