#排序 #字母顺序 #实用工具 #命令行 #文件系统

应用 keysort

按字符分配目录对文件/文件夹进行排序

4 个版本

0.1.0-alpha.2C2021年11月4日
0.1.0-alpha.2B2021年11月3日

命令行实用工具 中排名 #2187

MIT/Apache

16KB
153

KeySort-cli

keysort 是一个小型实用工具,通过为文件夹分配一个键/字符,然后将每个文件和文件夹的分配键按顺序输入,将文件和文件夹排序到不同的文件夹中

截至版本 0.1.0-alpha.2C,此应用程序只能在 macOS 上运行,除非终端输入格式正确

安装

从 Crates.io 安装

cargo install keysort --version "0.1.0-alpha.2C"

用法

使用当前版本的 keysort,您需要正确输入语法,且目标位置没有现有的文件/文件夹,否则程序会崩溃并关闭

  1. 启动 keysort
keysort
  1. 输入 目标文件夹(建议使用绝对路径)
$ keysort
Drag and Drop destination folders (Separate each directory by space)
<directory1> <directory2> <directory3>

// Example:
/Users/john/Desktop /Users/john/Documents /Users/Documents/Folder\ 1

在 macOS 上,您只需将选定的文件夹拖放到终端窗口即可完成此输入,但在 Linux 和 Windows 上,这将在路径的两端添加撇号(' ')。这可能会引起程序问题,因此如果您使用 Windows 和 Linux,请从目录名中删除撇号(')

  1. 为文件夹分配键/字符

程序将遍历您在第 2 步中输入的文件夹

Enter a character to assign to folder:
/directory/inputted/1
<character> //User input here

Enter a character to assign to folder:
/directory/inputted/2
<character>

//Example
Enter a character to assign to folder:
/Users/john/Desktop
a //Type 'a' and hit Enter

Enter a character to assign to folder:
/Users/john/Documents
b //Type 'b' and hit Enter
...........
  1. 选择要移动的文件/文件夹

在为目的地文件夹分配键后,程序将提示您

Is your file/folder all located in the same directory? (y/n)

如果您有一个包含您打算移动的所有文件和文件夹的文件夹,选择 (输入 'y')来选择此选项。此选项将仅扫描一级(所选文件夹的内容,不包括子目录)中的文件和文件夹以进行移动。

因此,当您选择是并选择 allContents 作为包含所有文件和文件夹的文件夹时

// allContents/
// |
// +- File1.txt
// +- File2.rar
// +- File3.md
// +- Folder1
//   |
//   +- fileInFolder.txt
//   +- fileInFolder2.rar
// +- Folder2
//   |
//   +- Folder3
//   +- Folder4

Is your file/folder all located in the same directory? (y/n)
y

Enter the directory where all files/folders are stored
/path/to/allContents <- Only input one directory, then hit Enter

以下是要移动的内容

File1.txt
File2.rar
File3.md
Folder1 // And its contents (recursive)
Folder2 // And its contents (recursive)

如果您为此选项选择 ,您可以单独选择要移动的文件和文件夹。就像第 2 步一样,用空格分隔每个项目

Is your file/folder all located in the same directory? (y/n)
n

Enter files/folders to move (Separate by spaces)
<directory1> <file1.ext> <file2.ext> <directory3>

// Example
Enter files/folders to move (Separate by spaces)
/Users/john/Desktop/Folder1 /Users/john/Documents/file.rar /Users/john/Music/MusicFolder

截至目前,此程序在移动大文件时速度较慢,因为它使用 fs_extra 库,该库尝试逐块复制文件夹,并且受其分配的缓冲区大小的限制。目前,此缓冲区大小设置为 100MB。如果您有超过 5 GB 的文件,我建议避免使用此工具,因为确实会移动文件,但命令行会暂时无响应

  1. 移动文件

程序现在将遍历您在上一步中选择的每个项目。

现在您需要做的就是输入要移动到的目标文件夹的键/字符。

Move [source file/folder] to:
a //Type the character assigned in step 3 then hit Enter

Move [source file/folder] to:
b

输入字符后,它将开始移动文件。根据文件大小,可能需要一段时间才能显示下一个 '移动' 提示,请耐心等待。所有文件移动完成后,程序将退出

待办事项和已知问题

待办事项

已知问题

  • 当目标位置存在同名文件夹时,不会移动文件夹
  • 当文件已存在时,会引发恐慌
  • fs_extra 在移动大型目录/文件时速度过慢
    • 解决方案:增加缓冲区大小
      • 缺点:效率较低

依赖项

约 2MB
约 37K SLoC