Skip to main content

uniformly change file or directory names

Project description

Introduction

A tool for uniformly change file sor directory names and also support rollback these operations.

In short,fdn is about file names operation.

A Python tool to unify file or directory name.

File or directory name format:

  1. no space in file name(firstly every space will be replaced by an underscore,then multiple consecutive underscores will be reduced to one);

  2. only underscore allowed in file name,all other control characters will be replaced by underscore;

  3. multiple consecutive underscores will be reduced to one;

  4. underscore at the beginning of file name will be deleted;

  5. underscore at the end of file name will be deleted;

  6. keep bash special parameters in file name;

  7. some terminology will remained(update continuously) ,such as USB,PCIe …​

Installation

To install fdn via conda:

$ conda install -c hobbymarks fdn

To install fdn via pip:

$ pip install fdn

Usage/参数

Options:

Usage: fdn [OPTIONS] [PATH]...

  Files in PATH will be changed file names unified.

Options:
  -d, --max-depth INTEGER     Set travel directory tree with max
                              depth.  [default: 1]
  -t, --file-type [file|dir]  Set type.If 'file',operations are only
                              valid for file,If 'dir',operations are
                              only valid for directory.  [default:
                              file]
  -i, --in-place              Changes file name in place.  [default:
                              False]
  -c, --confirm               Need confirmation before change to
                              take effect.  [default: False]
  -l, --is-link               Follow the real path of a link.
                              [default: False]
  -f, --full-path             Show full path of file.Relative to the
                              input path.  [default: False]
  -a, --absolute-path         Show absolute path of file.  [default:
                              False]
  -r, --roll-back             To roll back changed file names.
                              [default: False]
  -o, --overwrite             Overwrite exist files.  [default:
                              False]
  -p, --pretty                Try to pretty output.  [default:
                              False]
  -e, --enhanced-display      Enhanced display output.  [default:
                              False]
  --version                   Show the version and exit.
  -h, --help                  Show this message and exit.

ATTENTION!

When you run fdn ,you will see two kinds of output:

  • First Kind

   sample▯file▯name
-->sample_file_name

The output means: a file name sample file name will be changed to sample_file_name

--> means in dry run mode ,operation not take effect.The character means space ,every space will be replaced by one .

The character ``▯`` is only for the convenience of visual contrast and only display in output.

or

  • Second Kind:

   sample▯file▯name
==>sample_file_name

The output means: a file named sample file name has been changed to sample_file_name

==> means operation have taken effect.

all deleted character will be display as red color ,such as the original file name:

sample ▯ file ▯ name

all added character will be diplayed as green color ,such as the changed file name:

sample * file * name

Options

-d option

$  fdn tgt_root -f -t dir -d 2
   tgt_root/test directory/$0_T\▯Only
-->tgt_root/test directory/$0_T_Only
   tgt_root/!临时文件夹
-->tgt_root/LSW临时文件夹
   tgt_root/_is▯dir▯%
-->tgt_root/Is_dir_%
   tgt_root/测试@#文件夹
-->tgt_root/CS测试_文件夹
   tgt_root/test▯directory
-->tgt_root/Test_Directory
   tgt_root
-->Tgt_Root
********************************************************************
In order to take effect,add option '-i' or '-c'

$ fdn tgt_root -f -t dir -d 1
   tgt_root/!临时文件夹
-->tgt_root/LSW临时文件夹
   tgt_root/_is▯dir▯%
-->tgt_root/Is_dir_%
   tgt_root/测试@#文件夹
-->tgt_root/CS测试_文件夹
   tgt_root/test▯directory
-->tgt_root/Test_Directory
   tgt_root
-->Tgt_Root
********************************************************************
In order to take effect,add option '-i' or '-c'

-t option

$  fdn tgt_root -f -t dir
   tgt_root/!临时文件夹
-->tgt_root/LSW临时文件夹
   tgt_root/测试@#文件夹
-->tgt_root/CS测试_文件夹
   tgt_root/test▯directory
-->tgt_root/Test_Directory
   tgt_root/_is▯dir▯%
-->tgt_root/Is_dir_%
********************************************************************
In order to take effect,add option '-i' or '-c'

$ fdn tgt_root -f
   tgt_root/thi_Is_File_%.mp4
-->tgt_root/Thi_Is_File_%.mp4
   tgt_root/$0▯▯测试用文件.html
-->tgt_root/$0_测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

-i option

$ fdn tgt_root/\$0\ \ 测试用文件.html -io
   $0▯▯测试用文件.html
==>$0_测试用文件.html

-c option

$ fdn tgt_root/\$0\ \ 测试用文件.html -c
$0  测试用文件.html
Please confirm(y/n/A/q) [no]:
   $0▯▯测试用文件.html
-->$0_测试用文件.html

$ fdn tgt_root/\$0\ \ 测试用文件.html -c
$0  测试用文件.html
Please confirm(y/n/A/q) [no]: y
   $0▯▯测试用文件.html
==>$0_测试用文件.html

-l option

This Option

-f option

$ fdn tgt_root/\$0\ \ 测试用文件.html
   $0▯▯测试用文件.html
-->$0_测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

$ fdn tgt_root/\$0\ \ 测试用文件.html -f
   tgt_root/$0▯▯测试用文件.html
-->tgt_root/$0_测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

-a option

$ fdn
   a▯Test-file.txt
-->A_Test_File.txt
********************************************************************
In order to take effect,add option '-i' or '-c'

$ fdn -a
   /home/hma/a▯Test-file.txt
-->/home/hma/A_Test_File.txt
********************************************************************
In order to take effect,add option '-i' or '-c'

-r option

$ fdn tgt_root/\$0_测试用文件.html -r
   $0_测试用文件.html
-->$0▯▯测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

-o option

$ fdn tgt_root/\$0\ \ 测试用文件.html -i
Exist:$0_测试用文件.html
Skipped:$0  测试用文件.html
With option '-o' to enable overwrite.

$ fdn tgt_root/\$0\ \ 测试用文件.html -io
   $0▯▯测试用文件.html
==>$0_测试用文件.html

-p option

$ fdn tgt_root
   thi_Is_File_%.mp4
-->Thi_Is_File_%.mp4
   $0▯▯测试用文件.html
-->$0_测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

$ fdn tgt_root -p
   thi_Is_File_%.mp4
-->Thi_Is_File_%.mp4
   $0▯▯测试用文件.html
-->$0 _测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

-e option

$ fdn tgt_root/\$0_测试用文件.html -re
   $0_测试用文件.html
-->$0▯▯测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

Example/示例

change one file name/修改一个文件名

$ fdn tgt_root/\$0\ 测试用文件.html
   $0▯测试用文件.html
-->$0_测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

change files in dir/修改指定目录下文件名

$ fdn tgt_root
   $0▯测试用文件.html
-->$0_测试用文件.html
   This▯is▯a▯Test▯file.pdf
-->This_Is_A_Test_File.pdf
   _thi▯is▯file▯%.mp4
-->thi_Is_File_%.mp4
   这是测试文件▯.jpg
-->ZSC这是测试文件.jpg
********************************************************************
In order to take effect,add option '-i' or '-c'

rollback one file changed/取消一个文件名的修改

$ fdn tgt_root/\$0_测试用文件.html -r
   $0_测试用文件.html
-->$0▯测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

rollback files changed in dir/取消目录下文件名的修改

$ fdn tgt_root -r
   This_Is_A_Test_File.pdf
-->This▯is▯a▯Test▯file.pdf
   ZSC这是测试文件.jpg
-->这是测试文件▯.jpg
   thi_Is_File_%.mp4
-->_thi▯▯is▯▯▯file▯%.mp4
   $0_测试用文件.html
-->$0▯测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

joint work with fd/与 fd 工具联合工作

fd is a program to find entries in your filesytem. It is a simple, fast and user-friendly alternative to find.*

$ fdfind -HIi html -X fdn
   $0▯▯测试用文件.html
-->$0_测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

$ fdfind -HIi html -X fdn {} -pf
   tgt_root/$0▯▯测试用文件.html
-->tgt_root/$0 _测试用文件.html
********************************************************************
In order to take effect,add option '-i' or '-c'

简介

一个小工具,用于日常统一更改文件(或者文件夹)名称

Python 编写,用于日常统一更改资料的文件名。

目前的具体格式:

  1. 文件名不保留空格(首先空格会被替换为下划线,之后根据是否存在连续下划线来决定缩减);

  2. 文件名中只保留下划线字符,其余的控制类字符会被替换为下划线;

  3. 多个连续的下划线字符会被缩减为一个下划线;

  4. 如果文件名首字符为下划线将会被删除;

  5. 除去扩展名后的文件名如果最后一个字符是下划线也会被删除;

  6. 在文件名中保留 bash special parameters ;

  7. 文件名中包含的一些术语会保留术语本身的大小写写法(持续更新中…​),例如 USB,PCIe 等;

安装

建议使用conda 进行安装:

$ conda install -c hobbymarks fdn

使用pip 进行安装:

$ pip install fdn

参数

请前往Usage/参数 查看

示例

参考 Example/示例 查看

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fdn-2022.6.26.2937.tar.gz (786.3 kB view details)

Uploaded Source

Built Distribution

fdn-2022.6.26.2937-py2.py3-none-any.whl (782.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file fdn-2022.6.26.2937.tar.gz.

File metadata

  • Download URL: fdn-2022.6.26.2937.tar.gz
  • Upload date:
  • Size: 786.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for fdn-2022.6.26.2937.tar.gz
Algorithm Hash digest
SHA256 2162afd918964e8885416894eaf6def170edc1079793b84aa85dcd6ae4f8f2e5
MD5 79a970722318299970cdf76ad095ff5a
BLAKE2b-256 d8f9ab715c3158a07b8a61678a2a91ea0d3f11021c43361f3402a6602aa079a6

See more details on using hashes here.

File details

Details for the file fdn-2022.6.26.2937-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for fdn-2022.6.26.2937-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2d18033fb686e0b37edff2c3147cddd1dc9842e22486def10ae3e499aaae94ee
MD5 6a399f06ca12675167651dd1b22a5f5c
BLAKE2b-256 5076712dac7881663aca5bd2dda95ada9c233fc1c9db29202199c5c8879de0c5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page