0 directory bash mv subdirectory
我正在尝试将嵌套在子目录中的文件上移一层。我在OS X终端机上,对bash还是陌生的。我相当确定这很简单,我只是不知道该怎么做。
我想更改一个看起来像这样的文件结构:
~/container
/1-A
LEVEL 1 - 000.jpg
LEVEL 1 - 001.jpg
LEVEL 1 - 002.jpg
/1-B
/2-A
LEVEL 2 - 007.jpg
LEVEL 2 - 008.jpg
LEVEL 2 - 009.jpg
/1-C
LEVEL 1 - 003.jpg
LEVEL 1 - 004.jpg
LEVEL 1 - 005.jpg
LEVEL 1 - 006.jpg
/1-D
/2-C
LEVEL 2 - 010.jpg
LEVEL 2 - 011.jpg
LEVEL 2 - 012.jpg
LEVEL 2 - 013.jpg
LEVEL 2 - 014.jpg
/1-E
LEVEL 1 - 015.jpg
LEVEL 1 - 016.jpg
LEVEL 1 - 017.jpg
/1-F
/2-B
/3-A
LEVEL 3 - 018.jpg
LEVEL 3 - 019.jpg
LEVEL 3 - 020.jpg
LEVEL 3 - 021.jpg
Run Code Online (Sandbox Code Playgroud)
到一个看起来像这样的人:
~/container
/1-A
LEVEL 1 - 000.jpg
LEVEL 1 - 001.jpg
LEVEL 1 - 002.jpg
/1-B
LEVEL 2 - 007.jpg
LEVEL 2 - 008.jpg
LEVEL 2 - 009.jpg
/2-A
/1-C
LEVEL 1 - 003.jpg
LEVEL 1 - 004.jpg
LEVEL 1 - 005.jpg
LEVEL 1 - 006.jpg
/1-D
LEVEL 2 - 010.jpg
LEVEL 2 - 011.jpg
LEVEL 2 - 012.jpg
LEVEL 2 - 013.jpg
LEVEL 2 - 014.jpg
/2-C
/1-E
LEVEL 1 - 015.jpg
LEVEL 1 - 016.jpg
LEVEL 1 - 017.jpg
/1-F
/2-B
LEVEL 3 - 018.jpg
LEVEL 3 - 019.jpg
LEVEL 3 - 020.jpg
LEVEL 3 - 021.jpg
/3-A
Run Code Online (Sandbox Code Playgroud)
我试过了:
find ~/container -mindepth 3 -type f -exec mv {} . \;
Run Code Online (Sandbox Code Playgroud)
和
find ~/container -mindepth 3 -type f -exec mv {} .. \;
Run Code Online (Sandbox Code Playgroud)
但是它们将文件相对于根目录移动,而不是相对于文件本身所在的目录。换句话说,它们将文件移得太远。我希望他们精确地向上移动一个层次,但是无论它们是如何深深地嵌套。
有人可以帮忙吗?
小智 5
这应该可以解决您的问题:
find ~/container -mindepth 3 -type f -execdir mv "{}" ./.. \;
Run Code Online (Sandbox Code Playgroud)
说明:
find ~/container在此文件夹中搜索。
-mindepth 3仅显示向下3个目录的文件。
-type f仅显示文件(不显示目录)。
-execdir在其目录内的每个文件上执行以下命令。
mv "{}" ./..将文件上移一个目录。
\;对所选的每个文件重复一个新命令。