Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
linux如何将文件名更改为其文件夹的名称?_Linux - Fatal编程技术网

linux如何将文件名更改为其文件夹的名称?

linux如何将文件名更改为其文件夹的名称?,linux,Linux,我在Linux上工作, 我有一个包含许多子文件夹的文件夹,每个子文件夹中都有一个名为Analyze.txt的文件。 我想将所有这些文件(Analyze.txt)移动到一个文件夹中,并将Analyze.txt文件的名称更改为其来源的子文件夹的名称 谢谢 Raz创建一个bash script.sh并授予它正确的权限 chmod +x <file>.sh chmod+x.sh 让我们看看要写入脚本的代码。 首先,移动到根目录: cd <path-to-root> for

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

谢谢


Raz

创建一个bash script.sh并授予它正确的权限

chmod +x <file>.sh
chmod+x.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
cd
现在需要循环每个子文件夹,在中重命名文件,然后将其移动到目标目录:

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
'ls'中dir的
;做
如果[-d$dir]];然后
cd$dir
mv./Analyze.txt./$dir.txt
mv./$dir.txt
光盘
fi
完成

使用这段代码,我假设目标目录不在树的根目录中。

是否可以操纵$dir以仅包含文件夹名称的一部分?类似于if$dir=^[0-9]*-[0-9]*-[0-9]*.[0-9h]*-[0-9m]*-[0-9s]*.[0-9s]*.*;那么$name=$1#(.*)?是的,您可以使用正则表达式。看看这个答案:@xbarvazx