Files

使用文件名創建目錄並將文件移動到其各自的文件夾

  • August 4, 2022

我的問題有點不同:

使用文件名創建目錄並將文件移動到其相應文件夾

由於在同一個文件夾中,我有每個文件的兩個類似副本,例如:

001.txt 和 001(1).txt

……

100.txt 和 100(1).txt

對於每兩個相似的副本,創建一個文件夾並將兩個相似的副本移動到一個文件夾中。 001.txt 和 001(1).txt 放入 001 文件夾

基於上述問題,但不起作用。來自上述問題的命令:

set -o errexit -o nounset
cd ~/myfolder
for file in *.txt
do
   dir="${file%.txt}"
   mkdir -- "$dir"
   mv -- "$file" "$dir"
done

試過:

set -o errexit -o nounset
cd ~/myfolder

for file in *(1).txt
do
   dir="${file%.txt}"
   mkdir -- "$dir"
   mv -- "$file" "$dir"
done

此命令將為每個文件創建文件夾。

有什麼建議可以區分像 001.txt 和 001(1).txt 這樣的文件,這樣我們就可以選擇所需的文件來創建一個文件夾,然後執行另一個命令來歸檔相同的目標?

你快到了。您缺少的是,您還需要嘗試從文件名中去除括號中的數字以派生目錄:

#!/bin/sh
for file in *.txt
do
   dir="${file%.txt}"         # Remove suffix
   dir="${dir%(*)}"           # Remove bracketed suffix if present

   mkdir -p -- "$dir"         # Create if necessary
   mv -f -- "$file" "$dir"    # Move the file
done

mkdir您可以在and前面mv加上前綴,echo以查看在您採取行動之前會發生什麼。

引用自:https://unix.stackexchange.com/questions/712389