我的文件有任意数量的扩展程序
a.jpg
b.jpg.jpg
c.jpg.jpg.png
...
我需要删除第一个以外的所有扩展程序
a.jpg
b.jpg
c.jpg
...
我目前有以下内容来查找带有附加扩展名的文件
find . -type f -name "*.*.*"
find . -type f -name "*.*.*.*"
find . -type f -name "*.*.*.*.*"
...
我不确定如何制作更清洁的版本。文件名中的唯一句点就在扩展名之前,所以我可以在上面的find命令中选择包含regex和-exec mv的第一个扩展名,但我不知道如何执行此操作。
答案 0 :(得分:1)
如果您有rename
实用程序,则可以使用:
rename -n 's/([^.]*\.[^.]+).+/$1/' *.*.*
对输出感到满意后,删除-n
(空运行)。
如果您没有rename
,那么您可以像这样使用sed
:
for i in *.*.*; do
echo mv "$i" "$(sed -E 's/([^.]*\.[^.]+).+/\1/' <<< "$i")"
done
在您对输出感到满意后删除echo
。
答案 1 :(得分:0)
仅extglob使用{{3}}:
#sort_buffer_size=8M # lead with # for default size
#join_buffer_size=8M # lead with # for default size
thread_cache_size=100 # from autocalc to reduce threads_created of 158K
innodb_buffer_pool_size=3G # from ~2G for growth and only 75% available for data
innodb_lru_scan_depth=512 # from 1024 to minimize CPU busy every second
key_buffer_size=64M # from 8M - you have 32M MyISAM indexes
key_cache_age_threshold=84600 # from 300 seconds to reduce key_reads
query_cache_min_res_unit=512 # from 4096 to increase QC results capacity
innodb_log_buffer_size=16M # from 8M suggested by Mysqltuner
table_open_cache=2K # from 1K to reduce tables_opened count
innodb_purge_threads=4 # from 1 to keep up with activity
innodb_flushing_avg_loop=10 # from 30 to keep up with activity