gpt4 book ai didi

linux - 移动文件并在 Bash 上包含它的目录后重命名它

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:07 25 4
gpt4 key购买 nike

我正在尝试学习 Linux 上的 bash,只是为了好玩。我认为拥有一个可以将类似文件组合在一起的 .sh 会非常有用。例如,假设我们有目录

/主页/文档/

目录内有/mathdocs/、/codingdocs/等

在所有这些子目录中,我们都有 doc.txt。子目录中所有文件的名称相同。

假设我想将它们组合在一起,我想将所有文件移动到/home/allthedocs/并根据它们所在的目录重命名它们。(mathdocs.txt、codingdocs.txt 等)

我该怎么做?

我已经尝试基于 ls 和 cp 命令创建一个脚本,但我不知道如何在移动文件后获取目录名称以重命名其中的文件。我猜它必须是某种迭代语句(对于 Y 目录上的 X),但我不知道该怎么做。

最佳答案

您可以使用 mv 一次性移动和重命名您的文件,循环通过一个 glob 抓取所有文件:

#!/bin/bash

dest_dir=/home/allthedocs

cd /home/docs
for file in */doc.txt; do
[[ -f "$file" ]] || continue # skip if not a regular file
dir="${file%/*}" # get the dir name from path
mv "$file" "$dest_dir/$dir.txt"
done

查看这篇文章了解更多信息:

关于linux - 移动文件并在 Bash 上包含它的目录后重命名它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44488701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com