gpt4 book ai didi

linux - 在单个 Linux 命令操作系统脚本中使用某些条件重命名多个文件夹中的所有文件。

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:51 25 4
gpt4 key购买 nike

我有多个包含多个文件的文件夹。我需要将这些文件重命名为与存储带有“_partN”前缀的文件的文件夹相同的名称。

例如,

我有一个名为“new_folder_for_upload”的文件夹,其中有 2 个文件。我需要转换这两个文件的名称,例如,

new_folder_for_upload_part1new_folder_for_upload_part2

我有很多像上面这样的文件夹,其中有多个文件。我需要按照上面的描述转换所有文件名。

任何人都可以帮我找到一个单独的 Linux 命令或脚本来自动完成这项工作吗?

最佳答案

假设使用 bash shell,并假设您希望为每个子目录重新启动文件编号,并将所有文件移动到顶级目录(保留空子目录)。格式化为脚本以便于阅读:

find . -type f -print0 | while IFS= read -r -d '' file
do
myfile=$(echo $file | sed "s@./@@")
mydir=$(dirname "$myfile")
if [[ $mydir != $lastdir ]]
then
NR=1
fi
lastdir=${mydir}
mv "$myfile" "$(dirname "$myfile")_part${NR}"
((NR++))
done

或者作为单行命令:

find . -type f -print0 | while IFS= read -r -d '' file; do myfile=$(echo $file | sed "s@./@@"); mydir=$(dirname "$myfile"); if [[ $mydir != $lastdir ]]; then NR=1; fi; lastdir=${mydir}; mv "$myfile" "$(dirname "$myfile")_part${NR}"; ((NR++)); done

当心。这是武装,并将对当前工作目录中或下面的每个文件进行批量重命名/移动。使用风险由您自行承担。

删除空子目录:

find . -depth -empty -type d -delete

关于linux - 在单个 Linux 命令操作系统脚本中使用某些条件重命名多个文件夹中的所有文件。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401821/

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