簡體   English   中英

將所有文件夾和文件移動到 Linux 目錄中具有相同主題名稱的文件夾中

[英]move all the folders and files to the folder with the same subject name in the directory Linux

例如,我在同一目錄中有 001、001_ses-1、001_ses-2 文件夾和文件 001_lg1.lsf、001_recon1.lsf、001_trac1.lsf。 我有數百個科目。 我想將文件夾:001_ses-1、001_ses-2 和文件:001_lg1.lsf、recon1_001.lsf 和 trac1_001.lsf 移動到 001 主文件夾。 我該怎么做呢?

list={001, 011, 023, 059, ..... 102}
for i in list; do rm i* i; done 

到目前為止,我沒有任何線索。 需要一些幫助來解決它!

根據評論中提供的信息,識別目標文件夾有兩種可能性:

A) 創建一個手動列表。 這是在 Bash 和兼容的 Linux shell 中完成的方式:

DEST_LIST=( "001" "002" "003" "004" ) 

for DEST in ${DEST_LIST[@]}; do
    mv "${DEST}_"* "${DEST}"

B) 創建模式的正則表達式並使用find
我將使用您評論中的模式作為示例:

PREFIX_PATTERN="[0-9]\{3\}_S_[0-9]\{3\}\.[0-9]"

for DEST in $(find . -type d -regex ".*/${PREFIX_PATTERN}"); do
    PREFIX=`expr "${DEST}" : ".*\(${PREFIX_PATTERN}\)"`
    mv "${PREFIX}_"* "${DEST}"

包含expr命令的額外行從find命令返回的完整文件夾路徑中提取干凈的文件夾名稱。

暫無
暫無

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

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