我正在尝试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) 死简单.
我该如何重命名
05_h.png
06_h.png
Run Code Online (Sandbox Code Playgroud)
至
05_half.png
06_half.png
Run Code Online (Sandbox Code Playgroud)
至少,我认为这很简单,但除非你已经知道,谷歌很难做到这一点.
谢谢....
编写一个简单的脚本,自动重命名一些文件.作为一个例子,我们希望将文件*001.jpg重命名为用户定义的字符串+ 001.jpg(例如:MyVacation20110725_001.jpg)此脚本的用法是让数码相机照片具有合理的文件名.
我需要为此编写一个shell脚本.有人可以建议如何开始吗?
我有大量的文件,如下所示:
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)
我怎样才能做到这一点?
我想浏览一堆目录并将所有以_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的替换已经丢失.有什么诀窍?
我有多个目录中的文件,例如:linux_file1.mp4,linux_file2.mp4等等.如何使用shell移动这些文件,以便名称等file1.mp4,file2.mp4以此类推.我有大约30个文件要移动到新名称.
我使用此命令查找具有给定模式的文件,然后将其重命名为其他内容
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,我看到了旧的文件名.
可能重复:
在unix中一次重命名多个文件
我想使用正则表达式重命名文件夹中的所有文件(在名称末尾添加名称)并移动到另一个文件夹.
我认为它应该是这样的:
mv -v ./images/*.png ./test/*test.png
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
谁能建议我一个解决方案?
我下载的很多文件都有文件名中的垃圾/垃圾邮件,例如
[ 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)
我觉得参数扩展是两者中最差的,但我喜欢它,因为我能够保留分配给文件的相同变量,以便在重命名后进行进一步处理(上面的代码用于为每个文件调用的脚本中文件下载完成后).
所以无论如何我希望有一个更好/更清洁的方式来做上述事情,比我自己更有知识的人可以告诉我,最好是以一种方式让我轻松地将旧/原始变量重新分配给新的/重命名的文件.
谢谢