-
Notifications
You must be signed in to change notification settings - Fork 0
/
rename-tool.1
359 lines (332 loc) · 8.17 KB
/
rename-tool.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
.TH NAME SECTION
.SH Name
rename-tool \- file rename tool
.SH SYNOPSIS
.B rename-tool
.I [options] files ...
.SH DESCRIPTION
.BR Rename-Tool
is a small and quick tool written in C to rename files.
It can change, lowercase and uppercase the names of a batch of files, or
change the files'
.I ownership.
.BR Rename-Tool
is powered by the
.I extended regular expression
for searching and substituting string patterns in the names.
.SH OPTIONS
.TP
.BR \-l , " \-\-lowercase"
Lowercase specified filenames.
.TP
.BR \-u , " \-\-uppercase"
Uppercase specified filenames.
.TP
.BR \-R , " \-\-recursive"
Perform on the specified files and all subdirectories.
.TP
.BR \-t , " \-\-test"
Test only mode. It won't change anything, just test the result of
searching and substituting.
.TP
.BR \-f , " \-\-file"
Load file names from the specified files.
.TP
.BR \-o , " \-\-owner \fIOWNER\fP"
Change the ownership of the specified files to OWNER.
.B (superuser only)
.TP
.BR \-v , " \-\-verbose"
verbose display.
.TP
.BR \-A, " \-\-always"
Always overwrite the existed files
.TP
.BR \-N , " \-\-never"
Never overwrite the existed files, discard the renaming process instead
.TP
.BR \-s/PATTERN/STRING[/SW]
Substitute PATTERN with STRING in the filenames.
.B rename-tool
will searching the
.I PATTERN
in the names. If the
.I PATTERN
matches, it would be replaced by the specified
.I STRING
and then call the system call to change the file's name.
.B SW
can be combined by the following switches:
.RS
.TP
.B g
replace all occurrences in the filename.
.TP
.B i
ignore case when searching.
.TP
.B b
backward searching and substituting. This does not support regular expression.
.TP
.B s
change file's suffix. In this case, the PATTERN should be some kind of
filename suffix.
.TP
.B r
declare that PATTERN is a regular expression.
.TP
.B e
declare that PATTERN is an extended regular expression.
.TP
.B 1-9
replace 1 to 9 occurrences in the filename.
.SH "REGULAR EXPRESSION"
This section about extended regular expression is digisted from the
manpage of
.B fgrep(1).
See it for details.
.PP
A regular expression is a pattern that describes a set of strings.
Regular expressions are constructed analogously to arithmetic
expressions, by using various operators to combine smaller expressions.
.PP
The fundamental building blocks are the regular expressions that match
a single character. Most characters, including all letters and digits,
are regular expressions that match themselves. Any metacharacter with
special meaning may be quoted by preceding it with a backslash.
.PP
A list of characters enclosed by
.B [
and
.B ]
matches any single
character in that list; if the first character of the list
is the caret
.B ^
then it matches any character
.I not
in the list.
For example, the regular expression
.B [0123456789]
matches any single digit. A range of ASCII characters
may be specified by giving the first and last characters, separated
by a hyphen.
Finally, certain named classes of characters are predefined.
Their names are self explanatory, and they are
.BR [:alnum:] ,
.BR [:alpha:] ,
.BR [:cntrl:] ,
.BR [:digit:] ,
.BR [:graph:] ,
.BR [:lower:] ,
.BR [:print:] ,
.BR [:punct:] ,
.BR [:space:] ,
.BR [:upper:] ,
and
.BR [:xdigit:].
For example,
.B [[:alnum:]]
means
.BR [0-9A-Za-z] ,
except the latter form is dependent upon the ASCII character encoding,
whereas the former is portable.
(Note that the brackets in these class names are part of the symbolic
names, and must be included in addition to the brackets delimiting
the bracket list.) Most metacharacters lose their special meaning
inside lists. To include a literal
.B ]
place it first in the list. Similarly, to include a literal
.B ^
place it anywhere but first. Finally, to include a literal
.B \-
place it last.
.PP
The period
.B .
matches any single character.
The symbol
.B \ew
is a synonym for
.B [[:alnum:]]
and
.B \eW
is a synonym for
.BR [^[:alnum]] .
.PP
The caret
.B ^
and the dollar sign
.B $
are metacharacters that respectively match the empty string at the
beginning and end of a line.
The symbols
.B \e<
and
.B \e>
respectively match the empty string at the beginning and end of a word.
The symbol
.B \eb
matches the empty string at the edge of a word,
and
.B \eB
matches the empty string provided it's
.I not
at the edge of a word.
.PP
A regular expression may be followed by one of several repetition operators:
.PD 0
.TP
.B ?
The preceding item is optional and matched at most once.
.TP
.B *
The preceding item will be matched zero or more times.
.TP
.B +
The preceding item will be matched one or more times.
.TP
.BI { n }
The preceding item is matched exactly
.I n
times.
.TP
.BI { n ,}
The preceding item is matched
.I n
or more times.
.TP
.BI {, m }
The preceding item is optional and is matched at most
.I m
times.
.TP
.BI { n , m }
The preceding item is matched at least
.I n
times, but not more than
.I m
times.
.PD
.PP
Two regular expressions may be concatenated; the resulting
regular expression matches any string formed by concatenating
two substrings that respectively match the concatenated
subexpressions.
.PP
Two regular expressions may be joined by the infix operator
.BR | ;
the resulting regular expression matches any string matching
either subexpression.
.PP
Repetition takes precedence over concatenation, which in turn
takes precedence over alternation. A whole subexpression may be
enclosed in parentheses to override these precedence rules.
.PP
The backreference
.BI \e n\c
\&, where
.I n
is a single digit, matches the substring
previously matched by the
.IR n th
parenthesized subexpression of the regular expression.
.PP
In basic regular expressions the metacharacters
.BR ? ,
.BR + ,
.BR { ,
.BR | ,
.BR ( ,
and
.BR )
lose their special meaning; instead use the backslashed
versions
.BR \e? ,
.BR \e+ ,
.BR \e{ ,
.BR \e| ,
.BR \e( ,
and
.BR \e) .
.SH "SEE ALSO"
mv(1), chown(1), regex(7), regex(3)
.SH COPYING
This is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
.SH BUGS
Please report bug at <http://github.com/joede/rename-tool/issues>.
.SH EXAMPLES
.TP
.B rename-tool "\-l \-R" *
To lowercase all files' names recursively.
.TP
.B rename-tool "\-u \-s/abc/xyz/gi" *.c
Substitute all
.I abc
substrings appeared in C sources files with
.I xyz ,
ignoring the case, then uppercase the whole file name.
.TP
.B rename-tool "\-v \-s/.c/.cpp/s" *
Find all files with the
.I '.c'
suffix in the current directory and change them to
.I '.cpp'
suffix. Print the verbose information.
.TP
.B "find . \-name *.c > filename.lst"
.TP
.B rename-tool "\-s/.c/.cpp/s \-f" filename.lst
Find all files with the
.I '.c'
suffix under the current directory and change them to
.I '.cpp'
suffix by the list file.
.TP
.B rename-tool "\-s/abc/12345/bi" *
Read names from the
.I 'filename.lst' ,
find the last occurrence of
.I 'abc'
and replace it with
.I '12345' ,
ignoring the case.
.TP
.B rename-tool "\-s/^[A\-Z].*file/nofile/r" *
The target substring starts with a capital letter, and ends with string
.I 'file' .
There are 0 or any numbers of characters between the capital letter and
.I 'file' .
The substring, if encountered in filenames, will be replaced with
.I 'nofile'.
.TP
.B rename-tool "\-s/^[A\-Z].+file/nofile/eg" *
Similar to above, except it uses extended regular expression, such as the
.I '+'
metacharacter, and replaces all matching strings with
.I 'nofile'.
.TP
.B rename-tool "\-t \-s/^[A\-Z].+file/nofile/eg" *
.BR Test mode
only. Simulate the rename process but no files would be actually changed.
.TP
.B rename-tool "\-o guest \-R" /home/custom
change the ownership of
.I '/home/custom'
to
.I 'guest' .
The
.I 'guest'
should be an effective user in the current system. If
.I '/home/custom'
is a directory, all files' ownership in this directory tree will be changed to
.I 'guest' .