相关疑难解决方法(0)

在Unix中重命名多个文件

目录中有多个以prefix开头的文件fgh,例如:

fghfilea
fghfileb
fghfilec
Run Code Online (Sandbox Code Playgroud)

我想重命名所有这些以前缀开头jkl.是否有单个命令来执行此操作而不是单独重命名每个文件?

unix rename file batch-rename

227
推荐指数
8
解决办法
26万
查看次数

通过使用shell脚本替换文件名中的特定模式来重命名多个文件

编写一个简单的脚本,自动重命名一些文件.作为一个例子,我们希望将文件*001.jpg重命名为用户定义的字符串+ 001.jpg(例如:MyVacation20110725_001.jpg)此脚本的用法是让数码相机照片具有合理的文件名.

我需要为此编写一个shell脚本.有人可以建议如何开始吗?

shell

119
推荐指数
5
解决办法
12万
查看次数

重命名shell中的多个文件

我有多个目录中的文件,例如:linux_file1.mp4,linux_file2.mp4等等.如何使用shell移动这些文件,以便名称等file1.mp4,file2.mp4以此类推.我有大约30个文件要移动到新名称.

bash shell

61
推荐指数
4
解决办法
7万
查看次数

递归查找多个文件并在linux中重命名

我有类似的文件a_dbg.txt, b_dbg.txt ...Suse 10系统中.我想编写一个bash shell脚本,它应该通过从中删除"_dbg"来重命名这些文件.

谷歌建议我使用rename命令.所以,我执行命令rename _dbg.txt .txt *dbg*CURRENT_FOLDER

我的实际CURRENT_FOLDER包含以下文件.

CURRENT_FOLDER/a_dbg.txt
CURRENT_FOLDER/b_dbg.txt
CURRENT_FOLDER/XX/c_dbg.txt
CURRENT_FOLDER/YY/d_dbg.txt
Run Code Online (Sandbox Code Playgroud)

执行rename命令后,

CURRENT_FOLDER/a.txt
CURRENT_FOLDER/b.txt
CURRENT_FOLDER/XX/c_dbg.txt
CURRENT_FOLDER/YY/d_dbg.txt
Run Code Online (Sandbox Code Playgroud)

它没有递归,如何使这个命令重命名所有子目录中的文件.喜欢XXYY我将有这么多的子目录,其名称是不可预测的.而且我CURRENT_FOLDER也会有一些其他文件.

linux bash shell scripting suse

60
推荐指数
6
解决办法
10万
查看次数

在ubuntu/bash下递归重命名文件和目录

我想将包含单词"special"的所有文件和目录重命名为"regular".它应该保持区分大小写,因此"特殊"不会变成"常规".

我如何以递归方式执行此操作?

linux bash ubuntu find

56
推荐指数
5
解决办法
5万
查看次数

在linux中使用正则表达式重命名文件

我有一组名为的文件:

Friends - 6x03 - Tow Ross' Denial.srt
Friends - 6x20 - Tow Mac and C.H.E.E.S.E..srt
Friends - 6x05 - Tow Joey's Porshe.srt
Run Code Online (Sandbox Code Playgroud)

我想像下面那样重命名它们

S06E03.srt
S06E20.srt
S06E05.srt
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能在linux终端上完成工作?我已经安装了重命名但是U使用以下方法获得错误:

rename -n 's/(\w+) - (\d{1})x(\d{2})*$/S0$2E$3\.srt/' *.srt
Run Code Online (Sandbox Code Playgroud)

regex terminal rename

45
推荐指数
8
解决办法
6万
查看次数

如何将shell命令应用于嵌套(和转载不良)子目录中的许多文件?

我正在尝试做类似以下的事情:

for file in `find . *.foo`
do
somecommand $file
done
Run Code Online (Sandbox Code Playgroud)

但命令不起作用,因为$ file非常奇怪.因为我的目录树有蹩脚的文件名(包括空格),我需要转义find命令.但是没有明显的转义似乎有效: -ls给我空格分隔的文件名片段 -fprint没有做得更好.

我也尝试过: for file in "找到.*.foo -ls"; do echo $file; done - but that gives all of the responses from find in one long line.

任何提示?我很高兴任何解决方法,但我很沮丧,我无法弄清楚这一点.

谢谢,亚历克斯

(嗨马特!)

bash shell for-loop escaping find

6
推荐指数
2
解决办法
6516
查看次数

如何为目录中的每个文件创建软链接?

我有一个目录,/original有数百个文件.我有一个脚本,它将一次处理一个文件并删除该文件,以便在脚本中断时不再执行.所以,我需要一堆软链接到文件上/original/processing.这是我试过的:

find /original -name "*.processme" -exec echo ln -s {} $(basename {}) \;

有类似的东西:

ln -s /original/1.processme /original/1.processme
ln -s /original/2.processme /original/2.processme
ln -s /original/3.processme /original/3.processme
...

我想要的东西:

ln -s /original/1.processme 1.processme
ln -s /original/2.processme 2.processme
ln -s /original/3.processme 3.processme
...

它似乎$(basename){}转换之前运行.有办法解决这个问题吗?如果没有,我怎么能达到目标?

linux bash find

6
推荐指数
3
解决办法
5487
查看次数

xargs和find,rm在文件名中抱怨\n(换行符)

我试图用Debian中的脚本删除树中最旧的文件.

find /home/backups -type f \( -name \*.tgz -o -name \*.gz \) -print0 | xargs -0 ls -t | tail -1 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

rm: cannot remove `/home/backups/tree/structure/file.2011-12-08_03-01-01.sql.gz\n': No such file or directory
Run Code Online (Sandbox Code Playgroud)

任何想法我做错了(或者有更容易/更好的方式?),我尝试过RTFM,但我迷路了.

linux bash xargs

5
推荐指数
1
解决办法
9219
查看次数

bash中`<(...)`'运算符'的名称是什么?

我熟悉为bash中的命令输入创建"临时文件",例如

cat file_1 <(echo hello) file_2
Run Code Online (Sandbox Code Playgroud)

我想更多地了解这个主题,但我不知道<( )运营商的名字.我怀疑这是一种IO重定向.

这个符号/运算符有名字吗?

bash io-redirection

3
推荐指数
1
解决办法
207
查看次数

如何在查找表达式中使用带有sed的文件名

尝试回答使用Bash/Perl根据每个文件的名称修改文件我结束了一个我不知道如何使用findsed一起使用的点.

假设存在某种文件结构,我们想要更改一行,附加文件名.

如果是正常for循环,我们会这样做:

for file in dir/*
do
   sed -i "s/text/text plus $file/g" $file
done
Run Code Online (Sandbox Code Playgroud)

但是,假设我们想要find用来更改所有子目录中的文件.在这种情况下,我会用...

find . -type f -exec sed -i "s/text/text plus {}/g" {} \;
                                              ^
                                   it does not like this part
Run Code Online (Sandbox Code Playgroud)

但这些{}sed是不能接受的,我得到的错误

sed:-e expression#1,char 20:`s'的未知选项

我发现了一些类似的问题(1),但在这种情况下,我无法将其概括为足以让我理解.

我相信你们会为此提供一个很好的解决方案.谢谢!

bash sed exec find

2
推荐指数
1
解决办法
247
查看次数