2015-11-03 74 views
-2

我正在Linux上工作, 我有一个文件夹包含许多子文件夹,在每个子文件夹中有一个名为Analyze.txt的文件。 我想将所有这些文件(Analyze.txt)移动到一个文件夹中,并将文件Analyze.txt的名称更改为其源自的子文件夹的名称。linux如何将文件名更改为其文件夹的名称?

感谢,

拉兹

回答

0

创建一个bash脚本.SH并给它正确的权限

chmod +x <file>.sh 

让我们看到代码编写成剧本。

cd <path-to-root> 

现在你需要循环的每个子文件夹,文件重命名,然后将其移动到目标目录:所有移动到根目录下的 首先

for dir in `ls`; do 
    if [[ -d $dir ]]; then 
     cd $dir 
     mv ./Analyze.txt ./$dir.txt 
     mv ./$dir.txt <path-to-dest-directory> 
     cd .. 
    fi 
done 

有了这个代码我假定目标目录不在树的根目录中。

+0

是否可以操作$ dir以仅包含部分文件夹名称?例如$ dir =^[0-9] * - [0-9] * - [0-9] * _ [0-9h] * - [0-9m] * - [0-9s] * _( 。*);那么$ name = $ 1#(。*)? – xbarvazx

+0

是的,你可以使用正则表达式。看看这个答案:[Bash正则表达式if语句](http://stackoverflow.com/questions/18709962/bash-regex-if-statement)@xbarvazx – fattidare

相关问题