我有一个包含许多文件的目录结构。我想递归地找到类似的文件并根据它们的名称对它们进行排序。
简单的部分:找到所有名为的文件f*.ext
并将它们移动到某个目录,比如说dir1
.
但现在我想再次遍历树并找到所有t*.ext
在 中匹配的内容dir1
。例如,dir1/f12345.jpg
查找对应的source-tree/t12345.jpg
(如果存在)并将其移动到dir2
。
最后,每个对每个dir2/t*.ext
都应该有一个dir1/f*.ext
.所有source-tree/t*.ext
没有的人都dir1/f*.ext
应该留在原地。
答案1
尝试这个:
# 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