Shell

根據文件名的相似性對文件進行排序

  • March 5, 2020

我有一個包含許多文件的目錄結構。我想遞歸地找到類似的文件並根據它們的名稱對它們進行排序。

最簡單的部分:找到所有命名的文件f*.ext並將它們移動到某個目錄,比如說dir1.

但現在我想再次遍歷樹並找到所有t*.extdir1. 例如,對於dir1/f12345.jpg找到對應的source-tree/t12345.jpg(如果存在)並將其移動到dir2.

最後,每個人都dir2/t*.ext應該有一個dir1/f*.ext。所有source-tree/t*.ext沒有 a 的人都dir1/f*.ext應該留在原地。

試試這個:

# Create dir2:
mkdir dir2
# After moving f* to dir1, loop through these files (dir1/f*):
for f in dir1/f*; do
   # get the basename, cut off the "f" and put a "t" instead:
   t=source-tree/t$(basename "$f" | cut -c 2-)
   # If that file exists, move it to dir2
   [ -f "$t" ] && mv "$t" dir2
done

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