相关疑难解决方法(0)

如何基于通配符匹配以递归方式查找当前和子文件夹中的所有文件?

如何基于通配符匹配以递归方式查找当前和子文件夹中的所有文件?

linux shell

1695
推荐指数
17
解决办法
221万
查看次数

如何在find中排除目录.命令

我正在尝试find为所有JavaScript文件运行命令,但如何排除特定目录?

这是find我们正在使用的代码.

for file in $(find . -name '*.js')
do 
  java -jar config/yuicompressor-2.4.2.jar --type js $file -o $file
done
Run Code Online (Sandbox Code Playgroud)

linux shell find

1250
推荐指数
26
解决办法
92万
查看次数

将目录中的所有文件从$ filename_h重命名为$ filename_half?

死简单.

我该如何重命名

05_h.png
06_h.png
Run Code Online (Sandbox Code Playgroud)

05_half.png
06_half.png
Run Code Online (Sandbox Code Playgroud)

至少,我认为这很简单,但除非你已经知道,谷歌很难做到这一点.

谢谢....

bash shell

121
推荐指数
7
解决办法
15万
查看次数

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

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

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

shell

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

重命名文件名的一部分

我有大量的文件,如下所示:

DET01-ABC-5_50-001.dat
...
DET01-ABC-5_50-0025.dat
Run Code Online (Sandbox Code Playgroud)

我希望它们看起来像这样:

DET01-XYZ-5_50-001.dat
...
DET01-XYZ-5_50-0025.dat
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

bash filenames rename

83
推荐指数
4
解决办法
9万
查看次数

使用find和sed递归重命名文件

我想浏览一堆目录并将所有以_test.rb结尾的文件重命名为_spec.rb结尾.这是我从未想过如何处理bash的事情所以这次我认为我会付出一些努力来实现它.到目前为止,我做得很短,我最大的努力是:

find spec -name "*_test.rb" -exec echo mv {} `echo {} | sed s/test/spec/` \;
Run Code Online (Sandbox Code Playgroud)

注意:在exec之后有一个额外的回声,所以在我测试时打印命令而不是运行.

当我运行它时,每个匹配文件名的输出是:

mv original original
Run Code Online (Sandbox Code Playgroud)

即sed的替换已经丢失.有什么诀窍?

bash scripting replace sed find

80
推荐指数
7
解决办法
8万
查看次数

重命名shell中的多个文件

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

bash shell

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

在文件中查找模式并重命名

我使用此命令查找具有给定模式的文件,然后将其重命名为其他内容

find . -name '*-GHBAG-*' -exec bash -c 'echo mv $0 ${0/GHBAG/stream-agg}' {} \;
Run Code Online (Sandbox Code Playgroud)

当我运行此命令时,我看到一些像这样的输出

mv ./report-GHBAG-1B ./report-stream-agg-1B
mv ./reoprt-GHBAG-0.5B ./report-stream-agg-0.5B
Run Code Online (Sandbox Code Playgroud)

但是最后,当我跑步时ls,我看到了旧的文件名.

linux bash

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

使用带有bash的正则表达式重命名文件

可能重复:
在unix中一次重命名多个文件

我想使用正则表达式重命名文件夹中的所有文件(在名称末尾添加名称)并移动到另一个文件夹.

我认为它应该是这样的:

mv -v ./images/*.png ./test/*test.png
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

谁能建议我一个解决方案?

regex bash

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

基于多种模式重命名文件的更好方法

我下载的很多文件都有文件名中的垃圾/垃圾邮件,例如

[ www.crap.com ] file.name.ext

www.crap.com - file.name.ext

我想出了两种处理它们的方法,但它们看起来都很笨重:

参数扩展:

if [[ ${base_name} != ${base_name//\[+([^\]])\]} ]]
then
    mv -v "${dir_name}/${base_name}" "${dir_name}/${base_name//\[+([^\]])\]}" &&
        base_name="${base_name//\[+([^\]])\]}"
fi

if [[ ${base_name} != ${base_name//www.*.com - /} ]]
then
    mv -v "${dir_name}/${base_name}" "${dir_name}/${base_name//www.*.com - /}" &&
        base_name="${base_name//www.*.com - /}"
fi

# more of these type of statements; one for each type of frequently-encountered pattern
Run Code Online (Sandbox Code Playgroud)

然后使用echo/sed:

tmp=`echo "${base_name}" | sed -e 's/\[[^][]*\]//g' | sed -e 's/\s-\s//g'`
mv "${base_name}" "{tmp}"
Run Code Online (Sandbox Code Playgroud)

我觉得参数扩展是两者中最差的,但我喜欢它,因为我能够保留分配给文件的相同变量,以便在重命名后进行进一步处理(上面的代码用于为每个文件调用的脚本中文件下载完成后).

所以无论如何我希望有一个更好/更清洁的方式来做上述事情,比我自己更有知识的人可以告诉我,最好是以一种方式让我轻松地将旧/原始变量重新分配给新的/重命名的文件.

谢谢

unix linux bash shell sed

10
推荐指数
3
解决办法
5408
查看次数

标签 统计

bash ×7

shell ×6

linux ×4

find ×2

sed ×2

filenames ×1

regex ×1

rename ×1

replace ×1

scripting ×1

unix ×1