【问题标题】:Is there a way to prepend file names based on respective folders?有没有办法根据各自的文件夹添加文件名?
【发布时间】:2022-01-28 04:21:01
【问题描述】:

我有几个文件夹,其中包含我的笔记的 Word 文档文件。我想运行一个简单的 bash 循环来帮助组织名称。

目前的布局是: 数据

 folder1
   1.jpg
   2.jpg
 folder2
   1.jpg

..等等

我想将所有 jpg 文件重命名为 folderX_1.jpg

可以只写一个循环吗?

【问题讨论】:

标签: bash shell command-line


【解决方案1】:

试试这个:

#!/bin/bash

origdir=$(pwd)

rm -fr source
mkdir source
cd source
mkdir folder1
touch folder1/1.jpg
touch folder1/2.jpg
mkdir folder2
touch folder2/1.jpg
cd ..

find source -type f -print0 | while IFS= read -r -d '' onefile
do
    dirname=$(dirname "$onefile" | tr '/' '-')
    filename=$(basename "$onefile")
    cp "$onefile" "$origdir"/"$dirname"-"$filename"
done
  • 第一部分只是创建一个测试目录/文件结构,根据需要删除或修改。
  • find ... | while ... 循环遍历目录/子目录结构中的每个文件。
  • 对于每个文件,提取目录名(将子目录的“/”替换为“-”),提取文件名并复制文件。
  • 如果您想移动而不是复制,请将cp 更改为mv

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2017-11-18
    • 2020-08-19
    相关资源
    最近更新 更多