-2
我正在Linux上工作, 我有一个文件夹包含许多子文件夹,在每个子文件夹中有一个名为Analyze.txt的文件。 我想将所有这些文件(Analyze.txt)移动到一个文件夹中,并将文件Analyze.txt的名称更改为其源自的子文件夹的名称。linux如何将文件名更改为其文件夹的名称?
感谢,
拉兹
我正在Linux上工作, 我有一个文件夹包含许多子文件夹,在每个子文件夹中有一个名为Analyze.txt的文件。 我想将所有这些文件(Analyze.txt)移动到一个文件夹中,并将文件Analyze.txt的名称更改为其源自的子文件夹的名称。linux如何将文件名更改为其文件夹的名称?
感谢,
拉兹
创建一个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
有了这个代码我假定目标目录不在树的根目录中。
是否可以操作$ dir以仅包含部分文件夹名称?例如$ dir =^[0-9] * - [0-9] * - [0-9] * _ [0-9h] * - [0-9m] * - [0-9s] * _( 。*);那么$ name = $ 1#(。*)? – xbarvazx
是的,你可以使用正则表达式。看看这个答案:[Bash正则表达式if语句](http://stackoverflow.com/questions/18709962/bash-regex-if-statement)@xbarvazx – fattidare