使用OSX Terminal在该文件夹中的第一个文件之后重命名文件夹

时间:2019-07-12 12:56:17

标签: bash macos terminal

我有一堆文件夹,它们都具有相同的名称或重复的数字,例如Material 01,Material 02,Material 181等。 里面有很多视频文件的名字都正确。我需要将文件夹重命名为与该文件夹中的第一个文件相同的名称(按名称排序)

2 个答案:

答案 0 :(得分:1)

Mac终端通常使用bash,因此可以实现以下目的: 在您拥有文件夹的目录中:将其放入名为rename.sh的文件中,然后键入bash rename.sh并按Enter键:

#! /bin/bash

for dir in Material*; do

  while read -rd ''; do
    newname=$(basename -- "${REPLY%.*}")
    break
  done < <(find "$dir" -maxdepth 1 -not -name '.*' -type f -print0 | sort -z)

  echo "dir:${dir} new:${newname}"
  mv -n "$dir" "$newname"
done

假设:

  • 每个第一部视频的文件名都不同
  • 首先,您首先要按字母顺序表示。

注意:该文件夹将根据文件名命名,但没有扩展名。但是,如果您还想在文件夹的新名称中添加扩展名,则可以用newname=$(basename -- "$REPLY")

替换while循环中的第一行。

此解决方案还使用-not -name '.*'忽略隐藏文件,并且能够处理文件名,包括换行符。但是我认为,在文件名中使用换行符通常是一个坏主意。

答案 1 :(得分:-1)

您可以尝试以下一种方法:

ername = $_SESSION['id'];

$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

$rand_dir_name = substr(str_shuffle($chars), 0, 15);

$location = "your_location/$username/$rand_dir_name";

mv($location);