簡體   English   中英

Linux根據文件名模式將文件批量復制到目錄中

[英]Linux batch copy files into directories based on filename pattern

我有將近500個具有以下文件名結構的pdf文件的列表:

XXXX-YYYY-MM-DD.pdf

其中XXXX是始終由“-”定界的可變長度數字代碼( 1到4位數字 ),例如:

51-2016-08-22.pdf
776-2016-08-22.pdf
3881-2016-08-22.pdf
4-2016-08-22.pdf
2860-2016-08-22.pdf

目標是將每個文件復制到其自己的目錄中,並像模式一樣命名目錄(即,文件776-2016-08-22.pdf進入目錄776)。 如何使用awk或sed分隔可變長度字段?

這是我的代碼:

for f in *.pdf

    do
        FOLDERNAME=`echo $f| awk (awk or sed missing code here)`
        mkdir /my/dir/structure/$FOLDERNAME
        cp $f /my/dir/structure/$FOLDERNAME/
    done

謝謝你的支持。

您可以使用:

for f in *.pdf; do
    d="${f%%-*}"
    mkdir -p "$d" && cp "$f" "$d"
done

正如ed-morton正確指出的那樣, 建議使用此解決方案,因為它在許多情況下都會失敗。 請遵循https://stackoverflow.com/a/39089589/3834860

保留此答案以供參考。

awk -F '-'指定分隔符, '{print $1}'指定分隔符之前的第一個元素。

for f in *.pdf

do
    FOLDERNAME=`echo $f| awk -F '-' '{print $1}'`
    mkdir /my/dir/structure/$FOLDERNAME
    cp $f /my/dir/structure/$FOLDERNAME/
done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM