之前看到一个教程是利用 Automator 来批量重命名的,确实很方便.
目前我有 1000 个文件夹,其中 300 个文件内就是图片,另外 700 个文件夹内分别都是一个子文件夹,子文件夹内在才是图片.
我需要将这 700 个文件夹内的子文件夹内的图片批量移动到上层文件夹内,同时删除掉各子文件夹.
由于不是程序员,所以实在是不会编程或者命令来解决,特来求助了...
1
thekoc 2016-10-11 17:34:53 +08:00
```
测试 ``` |
2
thekoc 2016-10-11 17:42:27 +08:00
echo 'import os
import sys import shutil def main(): root_path = sys.argv[1] assert os.path.isdir(root_path) assert len(os.listdir(root_path)) == 1000 for path in filter(lambda p: p != ".DS_Store", os.listdir(root_path)): abs_base_path = os.path.join(root_path, path) if len(os.listdir(abs_base_path)) > 0: if len(os.listdir(abs_base_path)) == 1: abs_child_path = os.path.join(abs_base_path, os.listdir(abs_base_path)[0]) assert os.path.isdir(abs_child_path) [shutil.move(os.path.join(abs_child_path, src), abs_base_path) for src in os.listdir(abs_child_path)] os.removedirs(abs_child_path) else: assert all(os.path.isfile(p) for p in os.listdir(abs_base_path)) print('All done.') if __name__ == "__main__": main()' > temunique92.py ======= 1. 打开终端(应用程序——实用工具——终端) 2. 把上面的内容复制到终端,按回车 3. 在终端输入 python temunique92.py 接着**不要**按回车,保持这个状态 4. 在 Finder 里找到你**包含 1000 个文件夹**的那个文件夹,确保里面只有 1000 个文件夹,没有别的乱七八糟的东西 5. 把那个文件夹按住,拖动到刚刚的终端窗口里面 6. 现在你应该能看到刚刚输入的 python temunique92.py 后面多了一些东西,就是你的那个文件夹 7. 按回车 8. 如果出现了 All done. 以外的任何信息请复制或者截图给我 |
3
thekoc 2016-10-11 17:43:40 +08:00
无视上面一条信息…缩进全给我搞乱了
|
4
thekoc 2016-10-11 17:47:17 +08:00
把复制 ===== 上面的内容改成复制这个链接 https://gist.githubusercontent.com/thekoc/3111a48114c8a115cfd70c8eb6fd4c36/raw/61274f3bf690a282d1953acf282bff1cfb251c22/tem.sh 里面的所有内容,其他不变
|
5
thekoc 2016-10-11 17:51:35 +08:00
|
6
zander 2016-10-11 19:44:43 +08:00 via iPhone
find mv
|
8
ouafukqk 2016-10-11 23:22:41 +08:00
|
9
stille OP 已经解决掉了..总结下方法
首先必须把所有文件夹批量更名排序 例如 101-1000 共计 900 个文件夹 (文件夹不能以 0 开头,所以 001-099 不行) 利用 Mac 终端 CD 命令到这 900 个文件夹的根目录下 or i in {1001..1400}; do find "$PWD/$i" -name "*" -type f | xargs -I '{}' mv {} "$PWD/$i"; done 就可以把所有子文件夹内文件移动到上层文件夹. 然后需要批量删除空的子文件夹...我转到 Windows 下 创建.bat 文件 @echo off for /f "tokens=*" %%a in ('dir /b /ad /s C:\^|sort /r') do rd "%%a" /q 2>nul 把 C:\改为需要删除空文件夹的根目录.即可 |
10
stille OP 补充上面的
or i in {1001..1400}; do find "$PWD/$i" -name "*" -type f | xargs -I '{}' mv {} "$PWD/$i"; done 中间的{1001..1400}就是你文件夹命名序列,例如我的情况就是更改为 {101..1000} 一共处理 900 个文件夹 另外批量重命名文件夹我是用的 Mac 下的 Automator,参考地址 http://bbs.feng.com/forum.php?mod=viewthread&tid=8171707 |
11
twosim 2021-07-11 23:16:10 +08:00
利用搜索功能,根据类型搜索改文件夹下的内容,然后把搜索结果全部拖动至上上一个文件夹即可。
|