【问题标题】:create multiple folders using existing file names in linux在linux中使用现有文件名创建多个文件夹
【发布时间】:2013-10-28 11:22:22
【问题描述】:

我已经下载了几个 pdf 文件(具有不同的名称)并将它们存储在特定目录中(例如,Downloads/directory1)。

我想创建文件夹以将这些文件存储在同一目录下,使用原始文件的名称,但没有扩展名 pdf。

例如,对于名为maths.pdf 的文件,我想创建文件夹maths 并将pdf 存储在其中。

我曾多次尝试使用basenamefor 等命令创建脚本,但都没有运气。

【问题讨论】:

    标签: bash pdf mkdir


    【解决方案1】:

    你可以这样做:

    假设你得到:

    filename='Downloads/directory1/math.pdf'
    
    f="${filename##*/}"
    dir="${f%.*}"
    
    mkdir -p "$dir"
    

    将创建mathdirectory

    【讨论】:

    • 虽然,我得到以下错误,语法错误接近意外令牌'dir="${f%.*}',这是我到目前为止的脚本 files='Downloads/directory1/*.pdf ' for f in "${files##*/}" dir="${f%.*}" mkdir -p "$dir" done
    • @user2927819:确保您使用的是 BASH
    【解决方案2】:

    尝试:

      cd Downloads/directory1
      for f in *.pdf; do
         fname=${echo $f | sed "s/.pdf//" }
         echo "Creating directory [$fname]"
         mkdir "$fname"
      done
    

    【讨论】:

    • 考虑使用basename,而不是sed 管道。
    • sed 管道可用于根据您的需要调整名称,例如 filename_dir。它比 basename 更灵活,但这只是我的意见。
    • 但是,我收到了几个“无法创建目录”错误,而是创建了以下文件夹 | , 回声和 $f
    • 我已经更新了答案。我忘记了一个重要问题:文件可能包含空格。顺便说一句,注意 ` 字符。
    猜你喜欢
    • 2013-01-08
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    相关资源
    最近更新 更多