首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unix CLI脚本,用于使用预先存在的名称重命名文件夹

Unix CLI脚本,用于使用预先存在的名称重命名文件夹
EN

Stack Overflow用户
提问于 2012-09-13 04:05:01
回答 4查看 181关注 0票数 0

我有一个文件夹结构如下的目录:

代码语言:javascript
复制
-- DATA -- ABD 1231345 -- 01-08-12 // date in mm-dd-yy format
                       -- 03-09-12
                       -- 06-11-12

        -- DEF 4859480 -- 02-10-12
                       -- 05-10-12
                       -- 07-10-12

我想批量重命名此DATA文件夹,如下所示

代码语言:javascript
复制
-- DATA -- ABD 1231345 -- 2012_01_08 // date in yyyy_mm_dd format with underscore
                       -- 2012_03_09
                       -- 2012_06_11

        -- DEF 4859480 -- 2012_02_10
                       -- 2012_05_10
                       -- 2012_07_10

您对如何在Mac OSX / unix上使用命令行完成此任务有什么建议吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-13 04:11:55

您可以使用for循环和awk,将每个文件名解析为您指定的格式,然后使用mv将原始文件名重命名为新名称:

代码语言:javascript
复制
for dir in DATA/*; do \
    pushd "$dir"; # change directory \
    for file in *; do \
        path=`echo $file | awk -F- '{print "20"$3"_"$1"_"$2}'`; \
        mv $file $path; # "rename" the file \
    done; \
    popd; # restore original directory \
done;

这可以在DATA上面的文件夹中执行。如果您希望直接在DATA中执行它,请将第一个循环更新为读取for dir in *; do而不是DATA/*。它告诉awk使用-作为分隔符(而不是空格),然后将字符串从"mm-dd-yy“重构为"20yy_mm_dd”。

使用pushdpopd将使脚本能够将当前目录更改为DATA (pushd)中的每个子目录,然后,在移动所有必需的文件后,将更改回原始目录(popd)。这样做可以节省你在保存目录路径/ etc时的大量解析工作。

票数 2
EN

Stack Overflow用户

发布于 2012-09-13 04:15:35

您可以使用string manipulationsarrays来实现这一点。

类似于:

代码语言:javascript
复制
for f in * ; do
  parts=(${f//-/ })
  mv "$f" "20${parts[2]}_${parts[1]}_${parts[0]}"
done

在此站点中搜索递归到目录的各种选项,例如:Shell script to traverse directories

票数 1
EN

Stack Overflow用户

发布于 2012-09-13 04:20:29

使用date命令转换文件名:

代码语言:javascript
复制
$ date -j -f %m-%d-%y 01-08-12 +%Y_%m_%d
2012_01_08

访问这些文件是一个小技巧。我们只需切换目录,以避免处理长文件路径。

代码语言:javascript
复制
for d in DATA; do
    pushd "$d"
    for f in *; do
        new_f=$(date -j -f %m-%d-%y $f +%Y_%m_%d)
        mv "$f" "$new_f"
    done
    popd
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12395481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档