Скопируйте файлы с тем же именем, но в разных каталогах в новый каталог, переименовывая их

Вы действительно должны использовать правильный анализатор CSV для данных CSV. Вот способ использования ruby ​​

ruby -rcsv -e '
  CSV.foreach(ARGV.shift) do |row|
    wanted = row.drop(2)   # ignore first 2 fields
    puts CSV.generate_line(wanted, :force_quotes=>false)
  end
' test
net2-thrift-netconf,net.driver.memory,2
net2-thrift-netconf,net.executor.cores,2
net2-thrift-netconf,net.executor.instances,2
net2-thrift-netconf,net.executor.memory,2
net2-thrift-netconf,net.sql.shuffle.partitions,141
net2-thrift-netconf,net.dynamicAllocation.enabled,true
net2-thrift-netconf,net.dynamicAllocation.initialExecutors,2
net2-thrift-netconf,net.dynamicAllocation.minExecutors,2
net2-thrift-netconf,net.dynamicAllocation.maxExecutors,20

или в виде одного -вкладыша

ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|r| puts CSV.generate_line(r.drop(2), :force_quotes=>false)}' test
0
21.02.2020, 20:35
2 ответа

Использование петли:

mkdir /path_to/new_dir
cd /path_to/top_dir

for i in */*.json; do 
  cp "$i" "/path_to/new_dir/$(basename "$i".json)_$(dirname "$i").json"
done
  • $(basename "$i".json)печатает имя файла без суффикса, например.f1
  • $(dirname "$i")печатает имя каталога, например.AA
1
28.04.2021, 23:22

С Ларри Уоллом perl-rename(, он же renameна Debian/Ubuntu и prenameна RHEL/Centos):

perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json

Замените -nна -vдля фактического выполнения.

0
28.04.2021, 23:22

Теги

Похожие вопросы