我--在compgen命令中看到使用过。
例如:
compgen -W "foo bar baz" -- b
Run Code Online (Sandbox Code Playgroud)
里面的意思是什么--?
我并不完全清楚,但是mvand rename(from util-linux-ng 2.17.2as /usr/bin/rename)之间有什么区别?除了rename接受正则表达式之外,是否还有其他优势mv?我相信rename也可以一次处理多个文件重命名,mv而不会这样做。
我无法在他们的man页面中找到明确的指示,是什么让他们与众不同,或者通过我自己的一些调查。
我正在编写一个简单的 shell 脚本来将文件更改one.PDF为one.pdf. 我将此文件存储在名为 Task1 的文件夹中。
我的脚本与 Task1 位于同一目录中。Shell1.sh当我运行它时调用Task1 变为 Task1.pdf 但 one.PDF 中的文件不会改变。我反过来需要它,但我尝试的任何方法似乎都不起作用我一直在语法错误之间交替,mv 无法移动,因为资源繁忙或只是重命名目录。
谁能告诉我我做错了什么?
#!/bin/bash
#shebang for bourne shell execution
echo "Hello this is task 1"
#Initial prompt used for testing to see if script ran
#/rename .* .pdf *.pdf // doesnt work
#loop to iterate through each file in current directory and rename
for file in Task1;
do
mv "$file" "${file%.PDF}.pdf"
done
Run Code Online (Sandbox Code Playgroud) 在 CentOS 上,rename 命令使用两个简单的字符串,from以及to.
rename from to file...
Run Code Online (Sandbox Code Playgroud)
而在 Debian/Ubuntu 上,它使用 perl 风格的正则表达式。
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
Run Code Online (Sandbox Code Playgroud)
为什么此实用程序因分布而异?是否有关于哪些发行版发布或默认使用该实用程序的哪些版本的参考?
当前目录中有一些无扩展名的文件(名称中没有点)。
我想像这样重命名:
filename -> filename.md
Run Code Online (Sandbox Code Playgroud)
我尝试这样做,mv * *.md但这没有帮助。
我对一个函数感兴趣,该函数接受扩展名的参数并相应地重命名,另一个用于文件执行操作。
我有超过 100 个文件命名为
x.assembled.forward.fastq.gz
x(n).unassembled.reverse.fastq.gz
Run Code Online (Sandbox Code Playgroud)
问题是我正在使用的管道不接受文件名中的“点”,我必须将它们全部更改_为这样
x_assembled_forward.fastq.gz
x(n)_unassembled_reverse.fastq.gz
Run Code Online (Sandbox Code Playgroud)
我认为可以使用简单的命令:
mv *.assembled.*.fast.gz *_assembled_*.fastq.gz
Run Code Online (Sandbox Code Playgroud)
.... 显然不是!:D
我怎样才能做到这一点?
可能的重复:
重命名多个文件(更改扩展名)
假设在我的当前/工作目录中有五个文件:
file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps
Run Code Online (Sandbox Code Playgroud)
有什么方法可以重命名当前/工作目录中的所有文件,扩展名为.xvg并给它们新的扩展名.txt(单独留下.eps文件)?可以用这个来完成rename,mv或mmv也许?我正在使用 Ubuntu Linux。谢谢!
Ubuntu 16.04
我对 linux 很陌生,并且在目录中有大量文件dir。这些文件有后缀_uploaded。
有没有办法重命名所有这些文件并将它们设置为后缀_handled而不是_uploaded?
我有一个 shell 脚本 ren.sh
#!/bin/bash
/usr/bin/mv /home/imp/imp/msgs/$1.PK1 /home/imp/imp/msgs/$1.BRD
/usr/bin/mv /home/imp/imp/msgs/$1.PK2 /home/imp/imp/msgs/$1.MIX
Run Code Online (Sandbox Code Playgroud)
它工作正常,但一次只能移动 2 个文件(*.PK2和*.PK1)。我希望它将所有现有*.PK1和*.PK2文件移动到*.MIX和*.BRD文件
这可能吗?
How to rename all the files in the directory in such a way the files get added "_1" before ".txt"
apac_02_aug_2017_file.txt
emea_02_May_2017_file.txt
ger__02_Jun_2017_file.txt
Run Code Online (Sandbox Code Playgroud)
To
apac_02_aug_2017_file_1.txt
emea_02_May_2017_file_1.txt
ger__02_Jun_2017_file_1.txt
Run Code Online (Sandbox Code Playgroud) 这部分是因为我对 BASH 的理解非常浅薄。
这是脚本:
eighteen=(2018*/*)
newe=`echo "$eighteen" | sed -e 's/\(-\)*$//g'`
while read f <&3 && read nf <&4; do
mv -v "${f}" "${nf}"
break
done 3<"$eighteen" 4<"$newe"
Run Code Online (Sandbox Code Playgroud)
我试图弥补我写的糟糕脚本,并删除-多个子文件夹中每个文件名末尾的符号。
和我得到的错误: ./cleanup.sh: line 16: 2018-08-13/untitled-102.arw: No such file or directory
值得注意的是,错误不是来自mv行,而是来自:done 3<"$eighteen" 4<"$newe"。
我从 StackExchange 上的答案中复制了 while 循环。速食,通常是不利于消化的,速食之道——理解,请帮我理解。给我一个关于如何4<"$newe" nf <&4调用前面提到的替换的提示,我应该如何搜索以了解更多信息。它是否应用于while语句上下文之外?